Python 使用PyODBC和SQL Alchemy同步数据更新
我有一个脚本,由几个用户使用。在此脚本中,首先删除数据库表,然后上载数据库表Python 使用PyODBC和SQL Alchemy同步数据更新,python,database,parallel-processing,sqlalchemy,pyodbc,Python,Database,Parallel Processing,Sqlalchemy,Pyodbc,我有一个脚本,由几个用户使用。在此脚本中,首先删除数据库表,然后上载数据库表 import pyodbc import sqlalchemy engine = sqlalchemy.create_engine('credtials', echo=False) cnxn = pyodbc.connect('credentials') with pyodbc.connect('...') as cnxn: mycursor = cnxn.cursor() mycursor.exe
import pyodbc
import sqlalchemy
engine = sqlalchemy.create_engine('credtials', echo=False)
cnxn = pyodbc.connect('credentials')
with pyodbc.connect('...') as cnxn:
mycursor = cnxn.cursor()
mycursor.execute('query_delete')
mycursor.commit()
mycursor.close()
# Precaluclated dataframe that contains the data (calculation not shown)
df.to_sql(name='db_table', con=engine, index=False, if_exists='append')
问题是,有时两个进程的时间安排不当。在这种情况下,过程的顺序是
删除(流程1)
删除(流程2)
上传(流程1)
上传(流程2)
如果发生这种情况,数据将被复制。是否有解决方案来防止此问题?您可能需要使用类似以下代码(未测试)来加强事务隔离:
engine=sqlalchemy.create_引擎(连接\u uri,隔离\u level='SERIALIZABLE')
使用engine.begin()作为conn:
conn.execute(sqlalchemy.text('DELETE FROM db_table WHERE…'))
to_sql(name='db_table',con=conn,index=False,如果_存在='append')
打印('更新完成')