gpt4 book ai didi

python - 是否可以创建一个接受 python-mysql 中变量列表的查询命令

转载 作者:行者123 更新时间:2023-11-29 11:36:50 25 4
gpt4 key购买 nike

我正在尝试使用 MySQLDb 库中的 executemany 进行多重查询。四处搜索后,我发现我必须创建一个使用 INSERT INTOON DUPLICATE KEY 的命令,而不是按顺序使用 UPDATE使用executemany

到目前为止一切都很好,但后来我遇到了一个问题,我无法有效地设置 SET 部分。我的表有大约 20 列(是否要批评表的肥胖取决于你。到目前为止它对我有用),如果可能的话,我想有效地形成命令字符串。

现在我有

update_query = """
INSERT INTO `my_table`
({all_columns}) VALUES({vals})
ON DUPLICATE KEY SET <should-have-each-individual-column-set-to-value-here>
""".format(all_columns=all_columns, vals=vals)

其中 all_columns 涵盖所有列,vals 涵盖一堆 %s,因为我稍后将使用 executemany

但是我不知道如何形成字符串的 SET 部分。我考虑过使用逗号分割将它们分成列表中的元素,但我不确定是否可以迭代它们。

总的来说,这样做的目标是只调用一次数据库进行更新,这是我现在能想到的唯一方法。如果您有更好的想法,也请告诉我。

编辑:添加更多信息

all_columns 类似于 'id, id2, num1, num2'

vals 现在设置为 '%s, %s, %s, %s'

当然,列数不仅仅是 4

最佳答案

假设您有一个用于命令集合的元组列表:

listUpdate = [('f1', 'i'), ('f2', '2')]

setCommand = ', '.join([' %s = %s' % x for x in listUpdate])
all_columns = 'id, id2, num1, num2'
vals = '%s, %s, %s, %s'

update_query = """
INSERT INTO `my_table`
({all_columns}) VALUES({vals})
ON DUPLICATE KEY SET {set}
""".format(all_columns=all_columns, vals=vals, set=setCommand)

print(update_query)

关于python - 是否可以创建一个接受 python-mysql 中变量列表的查询命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com