首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >select语句中的pysqlite用户类型

select语句中的pysqlite用户类型
EN

Stack Overflow用户
提问于 2009-03-04 07:08:07
回答 2查看 671关注 0票数 1

如何使用pysqlite将用户定义的类型用作比较中的值,例如:“...WHERE columnName >userType“?

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

但当在“SELECT* from task WHERE display =True”或“...”中使用bool时,它将失败。其中display = 'True.‘。’“在第一种情况下,Sqlite报告没有名为True的列的错误。在使用pysqlite自己的日期和时间戳适配器时,我似乎也遇到了同样的问题。

我可以针对这种用户类型和其他用户类型解决这个问题,但这并不是那么有趣。我想知道在查询中使用用户定义类型是可能还是不可能,这样我就不会一直用头撞墙。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-03-04 17:27:34

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

代码语言:javascript
复制
myvar = True
cur.execute('SELECT * FROM tasks WHERE display = ?', (myvar,))

这样,sqlite驱动程序将直接使用该值。没有转义,引用,转换是不再需要的。

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

票数 1
EN

Stack Overflow用户

发布于 2009-03-04 14:17:12

您可能必须将其转换为正确的类型。尝试"SELECT * FROM tasks WHERE (display = CAST ('True‘AS bool))“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/609516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档