我想使用SQLAlchemy提供的ON DUPLICATE KEY UPDATE可选性来增加一堆记录。
这些记录已使用以下命令成功插入python中(其中connection是engine.connect()对象,而table是Table对象)
record_list = [{'col1': 'name1', 'col2': '2015-01-31', 'col3': 27.2},
{'col1': 'name1', 'col2': '2016-01-31', 'col3': 25.2}]
query = insert(table)
results = connection.execute(query, record_list)
查看https://docs.sqlalchemy.org/en/13/dialects/mysql.html#insert-on-duplicate-key-update-upsert上的文档以及一些SO问题(包括可能在SQLAlchemy ON DUPLICATE KEY UPDATE上的注释的建议),我尝试了许多不同的示例,但是没有一个我可以看到该地址使用此方法使用upsert语句创建多个记录。
我正在尝试遵循
query = insert(table).values(record_list)
upsert_query = query.on_duplicate_key_update()
results = connection.execute(upsert_query)
但是要么得到.on_duplicate_key_update()要求不能为空的问题,要么SQL语法错误。
如果有人成功地进行了管理,并且可以在这里帮助我解决代码结构,我将非常感激。
最佳答案
我只是遇到了一个类似的问题,并用query.inserted创建了一个字典,为我解决了这个问题。
query = insert(table).values(record_list)
update_dict = {x.name: x for x in insert_stmt.inserted}
upsert_query = query.on_duplicate_key_update(update_dict)
关于python - 带有多个记录的Python SQLAlchemy ON重复键更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59291434/