我试图为template_list数组中的值创建一个插入查询。这些值用于 field template_name。
dir_template_list = ['template1', 'template2', 'template3']
sql = "INSERT INTO tbltemplate (template_name) VALUES(%s)" % (dir_template_list)
Run Code Online (Sandbox Code Playgroud)
是否有使用字符串占位符创建此查询的简单/更简单的方法?
INSERT INTO tbltemplate (template_name) VALUES ('template1'),('template2'),('template3')
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的实际表结构
FIELD
-------
id int(6)
template_name VARCHAR(128)
Run Code Online (Sandbox Code Playgroud)
首先,永远不要使用字符串格式来创建查询——否则你将面临 SQL 注入漏洞的风险,必须处理转义等问题。
正确的方法是对每一行使用单个查询并将数据作为参数传递:
sql = "INSERT INTO tbltemplate (template_name) VALUES (%s)"
for template in dir_template_list:
conn.query(sql, (template,))
Run Code Online (Sandbox Code Playgroud)
为了提高性能,您可能希望在事务中或使用准备好的语句执行此操作。