如何使用sqlalchemy以有效方式更新Blob

时间:2019-04-30 09:59:07

标签: python mysql sqlalchemy sql-update blob

我正在尝试更新一些另存为blob的XML文件在数据库中。我可以检索它们并更新文件本身,但是在尝试执行更新查询时,出现超时错误。该表的大小约为280GB,包含2546573行,我需要更新其中的1500行左右,所以有什么有效的方法吗?这是我正在测试的代码,仅将更新应用于一个文件,这是执行代码时出现的错误。 谢谢

  

内部错误:(pymysql.err.InternalError)(1205,'超出了锁定等待超时;尝试重新启动事务')

#file id
id=1851340
# retrieve the file from database
data_stmt="SELECT data FROM t_content WHERE iscurrent=1 AND ID='"+str(id)+"'"
temp_data= pd.read_sql_query(data_stmt,engine)
#update some info in the xml file
tree=add_lang(temp_data,str(id))
#convert Elemtree to string
xml_string=ET.tostring(tree.getroot()).decode()
#encode to binary
bin_data = xml_string.encode("utf-8")

#load metadata
metadata = MetaData()
t_content = Table('t_content', metadata, autoload=True, autoload_with=engine)
conn = engine.connect()
#update the file in the database
stmt = t_content.update().where(t_content.c.iscurrent==1 and t_content.c.ID ==id).values(data=(bin_data))
conn.execute(stmt)
print("Done")

0 个答案:

没有答案