动态创建占位符以在SQLite表中插入多列值
我知道在SQLite数据库中,可以通过一个包含多个值的元组,比如('2006-03-28', 'BUY', 'IBM', 1000, 45.00)
,以及一个对应的占位符(?, ?, ?, ?, ?)
来插入很多列的值。我在程序中动态创建这些值的元组,可能会有多达300个值。我想知道有没有一种安全的方法(能防止SQL注入攻击)来动态生成与查询字符串对应的占位符元组字符串(?, ?, ?, ...)
?我问这个是因为在开发过程中,随着数据库结构和数值元组的变化,我不想麻烦地去数、添加或删除?
。谢谢你的想法。
1 个回答
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)
如果它不符合你的结构要求,你就会遇到问题,不过那是另一个话题……