gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:44:53 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com