从字典键值一次在mysql中插入多个值

qrjkbowd  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(393)

我试图在mysql中使用动态insert命令,在一个事务中使用字典值,但出现了一个错误。另外,我想知道什么是最有效的方式来执行这个特定的情况(也许我的代码不是最佳的)?我使用for,因为在某些情况下字典可能是空的。谢谢

import mysql.connector
    mydb = mysql.connector.connect(..........
    mycursor = mydb.cursor()
    varStatic="test"
    cust={'74.2': '54', '172.26': '76', '7': 'B9'}
    insertStatement='"""INSERT INTO customers (id,number,desc) VALUES (%s,%s,%s)"""'
    for key in cust:
          insertStatement+=',('+key+','+cust[key]+','+varStatic+')'
    mycursor.execute(insertStatement)
    mydb.commit()
7xzttuei

7xzttuei1#

你可能会这样做,但有点困惑如何优化 for-loop 以及 value . 如果我能摆脱 append 或替换为 List Comprehensions ,则可以使用 insertStatement += ("(%s,%s,%s),"*len(cust.items()))[:-1] ```
import mysql.connector
mydb = mysql.connector.connect(user="k",passwd="k",db="k")
mycursor = mydb.cursor()
varStatic="test"
cust={'74.2': "54'", '172.26': '76', '7': 'B9'}
insertStatement= """INSERT INTO customers (id,number,desc) VALUES """
value = []
for k,v in cust.items():
insertStatement += "(%s,%s,%s),"
value.append(k)
value.append(v)
value.append(varStatic)

print(insertStatement[:-1],value)
try:
mycursor.execute(insertStatement[:-1],value)
mydb.commit()
except Exception as e:
print(e)
mydb.rollback()

相关问题