如何使用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自己的日期和时间戳适配器时,我似乎也遇到了同样的问题。
我可以针对这种用户类型和其他用户类型解决这个问题,但这并不是那么有趣。我想知道在查询中使用用户定义类型是可能还是不可能,这样我就不会一直用头撞墙。
谢谢。
发布于 2009-03-04 17:27:34
使用正确的方式将变量传递给查询:execute()**.**不要构建查询,请使用问号并将参数作为元组传递给
myvar = True
cur.execute('SELECT * FROM tasks WHERE display = ?', (myvar,))这样,sqlite驱动程序将直接使用该值。没有转义,引用,转换是不再需要的。
对每个参数都使用这种技术,甚至字符串、整数等,这样就可以自动避免SQL注入。
发布于 2009-03-04 14:17:12
您可能必须将其转换为正确的类型。尝试"SELECT * FROM tasks WHERE (display = CAST ('True‘AS bool))“。
https://stackoverflow.com/questions/609516
复制相似问题