使用Python单变量向SQLite数据库表单字段插入数据的正确方法
Python变量向SQLite单字段插入数据的正确写法
报错原因说明
- 第一种写法报错原因:
sqlite3.Cursor.execute()的第二个参数要求传入序列类型(元组/列表),你直接传单个wi_criteria变量,SQLite会把字符串这类可迭代的单个变量拆分成多个字符去对应占位符,占位符数量和绑定值数量不匹配,就会报绑定错误。 - 第二种写法报错原因:首先f-string拼接SQL本身不推荐,其次你语法有两处错误:少了
VALUES后的左括号、语句末尾少了闭合的双引号,就算补全符号,如果wi_criteria是字符串类型没有自带引号,也会继续报语法错误。
正确写法(推荐使用参数化查询,避免SQL注入风险)
# 注意单个参数的元组必须加末尾逗号,否则Python不会识别为元组 crsr.execute("INSERT INTO PBI(Acceptance_Criteria) VALUES (?)", (wi_criteria,)) connection.commit()
如果习惯用列表传参也可以写成:
crsr.execute("INSERT INTO PBI(Acceptance_Criteria) VALUES (?)", [wi_criteria]) connection.commit()
注意事项
不要自行拼接SQL字符串,参数化查询会自动处理不同数据类型的转义、引号包裹逻辑,既不会有语法问题,也能避免SQL注入漏洞。
内容的提问来源于stack exchange,提问作者Abhishek Rai
相关产品推荐
相关产品推荐

