python生成的mysql insert语句转换为句柄“on duplicate”

zujrkrfu  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(421)

下面的python代码一般会将值插入mysql数据库。它检查我名单的长度 field_split 并生成一个变量字符串 var_string . 我陷入困境的地方是我想修改这个来支持 ON DUPLICATE KEY UPDATE user=user_id_var . 如果我正在构建一个长字符串,我会知道如何做到这一点,但无法找到一种方法,通过将两个值传递给 cursor.execute .

var_string = ', '.join(['%s'] * len(field_split))
query_string = 'INSERT into ' + table_name 
query_string = query_string + ' VALUES (%s);' % var_string  #query_string = 'INSERT INTO tbl_rtp_GET_FBA_ESTIMATED_FBA_FEES_TXT_DATA VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);'
cursor.execute(query_string, field_split)
db.commit()
rn0zuynd

rn0zuynd1#

只需构造查询并将所有参数作为单个序列传递给 cursor.execute() . 你也可以使用 str.format() 要避免多个字符串串联(可能很慢),请执行以下操作:

var_string = ', '.join(['%s'] * len(field_split))
query_string = 'INSERT into {} VALUES ({}) ON DUPLICATE KEY UPDATE user=%s'.format(
    table_name, var_string)
cursor.execute(query_string, field_split + [user_id_var])
db.commit()

相关问题