Files
new_dbsync/db/mssql/execute.py
T
2025-05-20 12:02:07 -04:00

81 lines
2.4 KiB
Python

import sqlalchemy
import progressbar
import psycopg2.errors
class Update():
def __init__(self):
global jprocess
def rawexec(self, sqlquery):
connection = engine.connect()
try:
trans = connection.begin()
connection.execute(str(sqlquery))
except:
trans.rollback()
else:
trans.commit()
connection.close()
def fileexec(self, sqlfile):
connection = engine.connect()
trans = connection.begin()
for line in sqlfile:
sqlquery = sqlquery + str(line)
try:
connection.execute(str(sqlquery))
except:
trans.rollback()
lprint.logprint('error', 'Rollback for filename: ' + str(sqlfile))
sqlfile.close()
connection.close()
else:
trans.commit()
sqlfile.close()
connection.close()
def ormexec(self, listing, tablename):
try:
ins = tablename.insert()
result = engine.execute(ins, listing)
except sqlalchemy.exc.IntegrityError as ie:
if 'UNIQUE KEY' in ie.args[0]:
return True
except psycopg2.errors.UniqueViolation as ie2:
if 'unique constraint' in ie.args[0]:
return True
else:
return False
def __del__(self):
pass
class tvupdates():
def __init__(self):
pass
def update_tables(engine, updatesapi, tablename):
jprocess = loadjson()
print('Now retrieving available updates.')
print('Creating update transaction.')
ins = tablename.insert()
seriesupdates = jprocess.load(updatesapi)
updatelist = []
seriesrange = len(seriesupdates)
with progressbar.ProgressBar(maxval=seriesrange, redirect_stdout=True) as p:
for key, value in seriesupdates.items():
i = int(key)
updater = {}
updater['seriesid'] = key
updater['timestamp'] = value
updatelist.append(updater)
if i <= seriesrange:
p.update(i)
#time.sleep(0.1)
print('Update of tvupdates table is complete.')
print('Done.')
return(ins, updatelist)
def __del__(self):
pass