python-3.x - 如何在 sqlit3 表中选择变量
问题描述
由于某些原因,我试图从我的 SQLite 表中获取一些变量我收到一个错误,即“user1”列在表中不存在
我尝试做的是从那里转到我的表用户获取 user_id 值形式,其中同一表中的用户名等于值 user1
sql.cur.execute("SELECT user_id FROM users WHERE username = {}".format('user1'))
解决方案
由于您使用的是普通的 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')
推荐阅读
- java - 出现错误 org.openqa.selenium.WebDriverException:转发新会话时出错 用于设置 Firefox 功能的 VM 空池
- java - 如何使线条半透明?
- r - 如何在具有特定列的矩阵中应用简单操作?
- reactjs - React ● 我想将 react-component 转换为 JPG 或 PNG
- python - 'No python at' 错误阻止任何东西运行 - python pycharm
- sql - Oracle,从组中获取一行并转换为列
- python - Python中用于将字符串值存储在二维列表中的结构
- c# - 将自定义对象绑定到属性网格
- javascript - 如果设置了 .status,则表示忽略正文
- fortran - Fortran90 错误:“push”的指令后缀无效