[英]Is it possible to create a query command that takes in a list of variables in python-mysql
我試圖做一種利用multiquery executemany
在MySQLdb的圖書館。 搜索后,我發現必須創建一個使用INSERT INTO
以及ON 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.