我有一个SQLite数据库,我想使用Python变量进行搜索,如下所示:
cur.execute("SELECT * FROM list WHERE InstitutionName=Variable")
理想情况下,这将允许我将每行作为列表返回到包含用户正在搜索的所有行的更大列表。我意识到上面的内容是伪代码。我怎么能真正写出来?
答案 0 :(得分:12)
我认为你想使用参数替换功能:
cur.execute("SELECT * FROM list WHERE InstitutionName=?", (Variable,))
actual execute command上的sqlite3 docs page和第4个示例代码框中有更多文档。
请注意,您应该明确不使用%
或format
函数,因为它容易受到注入攻击:
# NEVER DO THIS
cur.execute("SELECT * FROM list WHERE InstitutionName='%s'" % (Variable,))
答案 1 :(得分:1)
如果要显示数据库中的多个记录,则可以在SQL查询中使用(LIKE)关键字:
("SELECT * FROM TABLENAME WHERE name LIKE'%?%'",(Variable,))
答案 2 :(得分:0)
如果您想使用LIKE
cur.execute("SELECT * FROM list WHERE InstitutionName like '%'||?||'%'", (Variable,))