【发布时间】:2021-08-10 02:32:05
【问题描述】:
我正在尝试查找某个字段与作为固定参数提供的字符串文字的开头匹配的所有记录。 needle 是表格中的一个字段。
示例:给定一个参数“John Doe”,我想获取表用户的所有记录,其中 first_name 字段是该“John Doe”字符串开头的子字符串(例如匹配记录将是那些名字为“John”、“Jo”或“Joh”等的人。
看来我可以使用以下 SQL 实现这一点:
SELECT * FROM user WHERE 'John Doe' LIKE first_name || '%'
现在如何将它翻译成 peewee?奇怪的是,我实际上能够为此获得正确的 SQL,但由于某种原因,当我通过 SQLite 命令行直接输入相同的查询时,peewee 返回一个空结果。
User.select().where(SQL("'John Doe'").startswith(User.first_name))
当我检查 sql() 时,它显示:
('SELECT "t1"."id", "t1"."first_name" FROM "user" AS "t1" WHERE ("John Doe" LIKE ("t1"."first_name" || ?))', ['%'])
但是结果是空的。命令行中的相同 SQL 返回正确的记录...我做错了什么?
【问题讨论】:
标签: python sql sqlite orm peewee