convert to sqlalchemy postgresql

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

103
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
@ -68,31 +64,51 @@ def print_row():
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
@ -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,7 +147,7 @@ while True:
elif vl == '':
print_row()
elif vl == 'help':
print """
print("""
commands:
tables lists tables
cols <table> lists columns of table
@ -150,23 +155,19 @@ commands:
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:
except:
try:
cur.execute("SELECT 1 FROM DUAL")
except cx_Oracle.DatabaseError:
print "Database connection lost!"
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 ""