convert to sqlalchemy postgresql
This commit is contained in:
parent
487ee604b9
commit
7423063b69
1 changed files with 61 additions and 60 deletions
121
sql.py
121
sql.py
|
@ -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 ""
|
||||
|
|
Loading…
Add table
Reference in a new issue