【发布时间】:2019-01-13 05:32:37
【问题描述】:
从我的Python 代码(实际上是Flask 应用程序),我需要执行sqlite 查询,结构如下
SELECT some_column FROM My_table WHERE some_column=some_value;
现在,some_column 在查询中重复出现两次,执行它的一种方法是:
cursor.execute('SELECT ? FROM Users WHERE ?=?;', (some_column, some_column, some_value))
这不是很好/Pythonic。然后我想出了:
cursor.execute('SELECT {0} FROM Users WHERE {0}=?;'.format(some_column), (some_value,))
最后,我一直使用.format():
cursor.execute('SELECT {0} FROM Users WHERE {0}={1};'.format(some_column, some_value), ())
我想知道是否有更漂亮和/或更 Pythonic 的方式将重复参数传递到 sqlite 的cursor.execute()?
【问题讨论】:
-
如果您在 SQL 查询中使用
format(),您将容易受到 SQL 注入攻击。