1

我有一个 SQLite 数据库,我想使用 Python 变量进行搜索,如下所示:

cur.execute("SELECT * FROM list WHERE InstitutionName=Variable")

理想情况下,这将允许我将每一行作为一个列表返回到一个更大的列表,其中包含用户正在搜索的所有行。我意识到我上面有的是伪代码。我怎么能写出来呢?

4

3 回答 3

17

我认为您想使用参数替换功能:

cur.execute("SELECT * FROM list WHERE InstitutionName=?", (Variable,))

在sqlite3 docs page上的实际执行命令和第 4 个示例代码框中有更多文档。

请注意,您不应明确使用%orformat函数,因为这容易受到注入攻击:

# NEVER DO THIS
cur.execute("SELECT * FROM list WHERE InstitutionName='%s'" % (Variable,))
于 2013-02-19T04:29:30.197 回答
2

如果要显示数据库中的多条记录,则可以在 sql 查询中使用 (LIKE) 关键字:

("SELECT * FROM TABLENAME WHERE name LIKE'%?%'",(Variable,))
于 2019-05-20T12:01:00.710 回答
0

如果你想使用 LIKE

cur.execute("SELECT * FROM list WHERE InstitutionName like '%'||?||'%'", (Variable,))
于 2018-12-15T14:20:10.717 回答