Python生成的MySQL Insert语句转换为句柄“on duplicate”

2024-03-28 11:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的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()

Tags: 字符串代码数据库fieldexecutestringvarmysql
1条回答
网友
1楼 · 发布于 2024-03-28 11:27:49

只需构造查询并将所有参数作为单个序列传递给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()

相关问题 更多 >