首页 > 解决方案 > 如何在 sqlit3 表中选择变量

问题描述

由于某些原因,我试图从我的 SQLite 表中获取一些变量我收到一个错误,即“user1”列在表中不存在

我尝试做的是从那里转到我的表用户获取 user_id 值形式,其中同一表中的用户名等于值 user1

sql.cur.execute("SELECT user_id FROM users WHERE username = {}".format('user1'))

标签: python-3.xsqlite

解决方案


由于您使用的是普通的 Python 字符串格式,因此您的查询是这样的。

SELECT user_id FROM users WHERE username = user1

请注意缺少引号。where username = user1是列用户名等于列 user1 的位置。

你需要引用你的价值观。

SELECT user_id FROM users WHERE username = 'user1'

不要将 SQL 视为字符串。从Python sqlite3 文档...

通常,您的 SQL 操作将需要使用 Python 变量中的值。你不应该使用 Python 的字符串操作来组装你的查询,因为这样做是不安全的;它使您的程序容易受到SQL 注入攻击(有关可能出错的幽默示例,请参见https://xkcd.com/327/ )。

相反,使用绑定参数。他们将查询更多地视为将参数传递给函数。

sql.cur.execute("SELECT user_id FROM users WHERE username = ?", 'user1')

推荐阅读