Python/PonyORM/MySQL - 使用多个 URL 参数进行查询

标签 python mysql flask ponyorm

我有一个 URL https://example.com?p1=nai&p2=tex&p3=mak

我在 MYSQL 上使用 PONY ORM + Flask。我想获取与 URL 参数匹配的所有行。 p1、p2 和 p3 是表中的字段,可以根据用户输入而变化

在 MySQL 中我会做类似 done [SELECT * FROM Table Name WHERE p1=nai&p2=tex]

在我的 PONY/Flask 代码下面

query = select(r for r in Route)
for key,value in args.items():
    query = query.where("lambda r: r.%s == '%s'" %(key, value))
    print(r.id)

我上面的查询只返回第一个参数的匹配项。即如果 p1 = nai 那么它将返回所有 p1 = nai 并忽略其余部分。我错过了什么?注意:不要担心 SQL 注入(inject)

最佳答案

如果你想使用 PonyORM 通过精确匹配来过滤参数,你可以为 filterwhere 方法指定关键字参数:

kwargs = {'name': 'John', 'age': 20}
query = Route.select().where(**kwargs)

对于更复杂的查询,可以使用 getattr:

for name, value in kwargs.items():
    query = query.where(lambda r: getattr(r, name) == value)

My query above just returns a match for the first parameter.

我怀疑这是由您的代码中的某些错误引起的,也许您将新查询分配给 query2 然后使用以前的 query 而不是 query2.

关于Python/PonyORM/MySQL - 使用多个 URL 参数进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924356/

相关文章:

debugging - asyncio.get_event_loop() 在 FLASK_DEBUG=1 时抛出错误

Javascript Google Signin 未捕获异常 [object Object]

javascript - 如何将图像直接从 Flask 服务器发送到 html?

python - 如何反转 python 列表中的所有 bool 值?

python - 在 MongoDB 中嵌入与链接。何时嵌入以及何时链接?

Mysql,SUM 列和 GROUP BY HOUR

MySQL:如何进行条件更新?

python importlib 没有命名的模块

python - 将朴素贝叶斯分类器保存在内存中

mysql - 列的错误排序规则