convert to sqlalchemy postgresql

This commit is contained in:
cecilkorik 2025-03-14 19:28:06 -04:00
parent 487ee604b9
commit 7423063b69

121
sql.py
View file

@ -1,17 +1,13 @@
#!/usr/bin/env python2.4
import cx_Oracle
import sys
import os
import traceback
try:
import readline
except ImportError:
pass
#!/usr/bin/python3
import os
import sys
import sqlalchemy
import readline
import traceback
if len(sys.argv) < 2:
connstr = raw_input('Connect string: ')
else:
connstr = sys.argv[1]
def softpad(s, l, padchar = " "):
padding = padchar * l
@ -24,7 +20,7 @@ def pad(s, l, padchar = " "):
rowbuffer = None
def print_row():
global rowbuffer
global rowbuffer, cur, db
if not cur or not cur.description:
return False
try:
@ -41,8 +37,8 @@ def print_row():
for i in range(len(rowbuffer)):
l = len(rowbuffer[i])
if i > len(lens):
print lens
print rowbuffer
print(lens)
print(rowbuffer)
if l > lens[i]:
lens[i] = l
rowbuffer = None
@ -65,34 +61,54 @@ def print_row():
cols = allcols[i]
for j in range(len(cols)):
cols[j] = pad(cols[j], lens[j])
colhdrrow = ' | '.join(colhdrs)
seprow = '-' * len(colhdrrow)
print colhdrrow
print seprow
print(colhdrrow)
print(seprow)
for cols in allcols:
colsrow = ' | '.join(cols)
print colsrow
print(colsrow)
rowbuffer = cur.fetchone()
if rowbuffer:
print " ( more ) "
print(" ( more ) ")
return True
except:
traceback.print_exc()
return False
db = cx_Oracle.connect(connstr)
cur = db.cursor()
opts = {
'page': '20',
'hide_null_tablespace': '1',
'hide_tablespaces': 'SYSTEM;SYSAUX;SDE;SPATIAL_DATA'
}
connstr = ""
if len(sys.argv) < 2:
if os.path.exists('settings.ini'):
try:
from cecil.core import inifile
config = inifile.inifile('settings.ini')
connstr = config['settings']['db']
except:
pass
if not connstr:
connstr = input('Connect string: ')
else:
connstr = sys.argv[1]
e = sqlalchemy.create_engine(connstr)
pool = e.connect()
db = pool.connection
cur = db.cursor()
c2 = db.cursor()
do_quit = False
while True:
try:
v = raw_input('# ')
v = input('# ')
except EOFError:
do_quit = True
@ -100,7 +116,7 @@ while True:
break
v = v.strip()
vl = v.lower()
if vl == 'quit' or vl == 'exit':
break
elif vl == 'commit':
@ -109,20 +125,8 @@ while True:
db.rollback()
elif vl == 'tables':
rowbuffer = None
conds = ["tablespace_name != '%s'" % (x,) for x in opts['hide_tablespaces'].split(';')]
if opts['hide_null_tablespace'][0:1] in ('1', 'Y', 'y', 'T', 't'):
conds += ['tablespace_name is not null']
conds = ' and '.join(conds)
if conds:
conds = ' where ' + conds
cur.execute("select table_name, tablespace_name from all_tables %s" % (conds,))
cur.execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES")
print_row()
elif vl[:5] == 'exec ':
cmd = v[5:]
try:
exec cmd
except:
traceback.print_exc()
elif vl[:5] == 'cols ':
rowbuffer = None
vs = v.split(' ')
@ -130,9 +134,10 @@ while True:
try:
c2.execute("select * from %s where 1 is null" % (vs[1],))
for coldata in c2.description:
print "%s%s" % (softpad(coldata[0], 40), coldata[1])
except cx_Oracle.DatabaseError, e:
sys.stdout.write(str(e))
print("%s%s" % (softpad(coldata[0], 40), coldata[1]))
except:
traceback.print_exc()
sys.stdout.write('\n')
elif vl[:4] == 'set ':
vs = v[4:]
vi = vs.find('=')
@ -142,31 +147,27 @@ while True:
elif vl == '':
print_row()
elif vl == 'help':
print """
print("""
commands:
tables lists tables
tables lists tables
cols <table> lists columns of table
commit commits any pending updates or inserts
rollback aborts and pending updates or inserts
help displays this help
quit exits sql.py
"""
commit commits any pending updates or inserts
rollback aborts and pending updates or inserts
help displays this help
quit exits sql.py
""")
else:
rowbuffer = None
try:
v = v.rstrip(';')
cur.execute(v)
print_row()
except cx_Oracle.DatabaseError, e:
try:
cur.execute("SELECT 1 FROM DUAL")
except cx_Oracle.DatabaseError:
print "Database connection lost!"
except:
try:
c2 = db.cursor()
c2.execute("SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE 1 IS NULL")
except:
print("Database connection lost!")
sys.exit(1)
sys.stdout.write(str(e))
sys.stdout.write(str(sys.exc_info))
print ""