gpt4 book ai didi

python - pysqlite 用户在 select 语句中键入

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:53 25 4
gpt4 key购买 nike

使用 pysqlite 如何将用户定义类型用作比较中的值,例如。 g:“... WHERE 列名称 > 用户类型”?

例如,我定义了一个具有必要注册、转换器等的 bool 类型。Pysqlite/Sqlite 按预期响应 INSERT 和 SELECT 操作(bool 'True' 存储为整数 1 并返回为 True)。

但是当 bool 用于“SELECT * fromtask WHERE display = True”或“... WHERE display = 'True'”时,它会失败。 “在第一种情况下,Sqlite 报告错误,指出不存在名为 True 的列。在第二种情况下,不会返回任何记录。如果使用 1 代替 True,则该选择有效。我在使用 pysqlite 自己的日期和时间戳适配器时似乎遇到了同样的问题。

我可以针对此用户类型和其他用户类型解决此行为,但这并不那么有趣。我想知道在查询中是否可以使用用户定义的类型,这样我就不会一直用头撞这堵特定的墙。

谢谢。

最佳答案

使用向查询传递变量的正确方法:不要构建查询,使用问号并将参数作为元组传递给 execute()

myvar = True
cur.execute('SELECT * FROM tasks WHERE display = ?', (myvar,))

这样 sqlite 驱动程序将直接使用该值。不再需要转义、引用、转换。

对每个参数都使用这种技术,甚至是字符串、整数等。这样您就可以自动避免 SQL 注入(inject)。

关于python - pysqlite 用户在 select 语句中键入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/609516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com