使用通配符的Psycopg2会导致TypeError

The*_*Jug 6 python psycopg2

目前我正在尝试搜索数据库以获取某些事件.我的查询是这样的

SELECT * FROM events WHERE summary ILIKE E'%test%' AND start_time > '2010-10-01'
Run Code Online (Sandbox Code Playgroud)

简单地说,我需要查询来查看日历事件的数据库,并返回任何带有'test'的摘要,并在本月初之后.

从数据库命令行查询时,返回预期结果.但是,当我尝试在我的Python脚本中使用psycopg2时:

cursor.execute("SELECT * FROM events WHERE summary ILIKE E'%test%' AND start_time > %(begin)s ", {'begin' : datetime.datetime(2010,10,1) })
Run Code Online (Sandbox Code Playgroud)

我收到类型错误

*** TypeError: 'dict' object does not support indexing
Run Code Online (Sandbox Code Playgroud)

做一些初始的谷歌搜索它听起来像我正在使用我的通配符的方式.我可能错了,我可能错过了一些我看不到的简单.希望来自社区的一双新鲜的眼睛可以纠正我的愚蠢;)

Joe*_*way 19

不确定这是否是你问题的完全根源,但我认为你需要转义你的通配符或参数化逻辑会混淆.

SELECT * FROM events WHERE summary ILIKE E'%%test%%' AND start_time > %(begin)s 
Run Code Online (Sandbox Code Playgroud)

我认为%%是正确的逃避,但它可能是\%


归档时间:

查看次数:

7511 次

最近记录:

14 年,6 月 前