我知道可以使用值为('2006-03-28', 'BUY', 'IBM', 1000, 45.00)
元组的变量和查询字符串中相应的占位符(?, ?, ?, ?, ?)
在SQLite数据库中插入许多列值。我在程序中动态创建值元组,它们可以容纳~300个值。我想知道是否有一个安全的(关于SQL注入攻击)方式动态生成相应的查询字符串的占位符元组字符串(?, ?, ?, ...)
?我要求这样做,以避免繁琐的计数,添加和删除?
,因为我的数据库结构和值元组在整个开发过程中都会发生变化。谢谢你的想法。
答案 0 :(得分:0)
根据values
中的项目数量构建字符串,例如:
def place_holder(values):
return '({})'.format(', '.join('?' * len(values)))
values = ['a', 'b', 'c']
ph = place_holder(values)
# (?, ?, ?)
然后像:
your_cursor.execute('insert into your_table values {}'.format(ph), values)
如果它不符合您的架构,您将遇到问题,但这是另一个问题......