mirror of
https://github.com/YunoHost-Apps/noalyss_ynh.git
synced 2024-09-03 19:46:20 +02:00
71 lines
1.8 KiB
Python
Executable file
71 lines
1.8 KiB
Python
Executable file
#!/usr/bin/python
|
|
#-*- coding: utf-8 -*-
|
|
#
|
|
import psycopg2
|
|
import psycopg2.extras
|
|
import getopt
|
|
import sys
|
|
|
|
try:
|
|
opt,args=getopt.getopt(sys.argv[1:],'s:t:c:')
|
|
if len (opt) == 0 :
|
|
raise NameError ('option')
|
|
schema='public'
|
|
table=''
|
|
connexion_string=''
|
|
class_name="None"
|
|
for o,a in opt:
|
|
if o == '-s':
|
|
schema=a
|
|
elif o == '-t':
|
|
table=a
|
|
elif o == '-c':
|
|
connexion_string=a
|
|
|
|
if table == '':
|
|
raise NameError('table')
|
|
except:
|
|
print "Utilisation "+sys.argv[0]+" -s nom_du_schema -t nom de la table + c connexion string"
|
|
print 'example -t jrnxc -c "dbname=xxx user=xx port=xx password=xxx"'
|
|
print """
|
|
This utility create a file, this file can be given as input to the script
|
|
create_phpclass.py with the option -f
|
|
This will create the corresponding PHP File that you need to put in the include folder
|
|
"""
|
|
sys.exit(-1)
|
|
|
|
cnx=psycopg2.connect (connexion_string)
|
|
curs=cnx.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
|
|
|
curs.execute('''
|
|
SELECT
|
|
columns.column_name,columns.data_type,columns.column_default
|
|
FROM
|
|
information_schema.columns
|
|
WHERE
|
|
columns.table_schema=%s
|
|
and columns.table_name=%s
|
|
''',(schema,table))
|
|
record=curs.fetchall()
|
|
file_name=table+"_struct.txt"
|
|
file=open(file_name,'w+')
|
|
|
|
# class_name
|
|
world=table.split('_')
|
|
worlds=[]
|
|
for i in world:
|
|
worlds.append(i.capitalize())
|
|
|
|
class_name='_'.join(worlds)
|
|
class_name=class_name+"_SQL"
|
|
|
|
file.write(class_name+"\n")
|
|
file.write(schema+"."+table+"\n")
|
|
record.reverse()
|
|
for l in record:
|
|
col_name,col_type,col_default=l
|
|
file.write ("%s\t|%s\t|%s\n"%(col_name,col_type,col_default))
|
|
|
|
file.close()
|
|
print "file %s has been created "%(file_name)
|
|
print "check that the first column is the primary key"
|