from sqlalchemy import create_engine, Table, MetaData, select, func
from sqlalchemy.orm import sessionmaker
import os
rspw = os.environ['RUNESTONEPW']
localengine = create_engine('postgresql://millbr02@localhost/runestoneanalysis')
remoteengine = create_engine('postgresql://bnmnetp_courselib:{}@web608.webfaction.com/bnmnetp_courselib'.format(rspw))
meta = MetaData()
def mirror_table(fromeng, toeng, tablename):
print("Mirroring {}".format(tablename))
from_tbl = Table(tablename, meta, autoload=True, autoload_with=fromeng)
to_tbl = Table(tablename, meta, autoload=True, autoload_with=toeng)
last = toeng.execute("select max(id) from {}".format(tablename)).first()[0]
s = select([from_tbl]).where((from_tbl.c.id > last))
result = fromeng.execute(s)
ct = 0
for row in result:
newrow = {}
for column in to_tbl.columns.keys():
newrow[column] = row[column]
s = to_tbl.insert().values(**newrow)
toeng.execute(s)
ct += 1
print("Inserted {} new rows into {}".format(ct,tablename))
for tbl in ['useinfo','acerror_log','courses','div_ids', 'code', 'timed_exam']:
mirror_table(remoteengine, localengine, tbl)