我有一个网址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]
在我的小马/烧瓶代码下面
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)
我上面的查询只返回第一个参数的匹配。i、 如果p1=nai,那么它将返回p1=nai处的所有值,并忽略其余值。我错过了什么?注意:不要担心SQL注入
抬起头来
Alexander的上述答案是正确的,但只会返回1个响应。您可能需要创建一个python数组并在查询结果中附加多个值。你知道吗
如果要按精确匹配筛选具有PonyORM的参数,可以为
filter
或where
方法指定关键字参数:对于更复杂的查询,可以使用
getattr
:我怀疑这是由代码中的某个bug引起的,可能您将新查询分配给
query2
,然后使用前面的query
而不是query2
。你知道吗您可以将请求参数与python的**kwargs功能一起使用。假设我们想在我们的用户数据库中寻找一个叫bob的人,他今年22岁:
您可以将请求参数转换为如下所示的字典:
然后可以使用kwargs查询我们的用户
这和:
它将把所有名为bob,年龄为22岁的用户放在一个列表中。你知道吗
完全工作的代码段:
使用此查询:
http://127.0.0.1:5000/?name=bob&age=22
,将打印:但是,当将它与无效的请求参数(
name=bob&age=22&country=russia)
)一起使用时,它会给您带来错误,因此您必须考虑到这一点。你知道吗编辑:我完全错过了小马奥姆位,抱歉。我对此一无所知,但是如果您可以使用与SQL Alchemy中相同的方式进行查询(column1=value1,column2=value2,…),那么它也应该适用于这个示例。不管怎样,我还是把它留在这里,因为它对那些使用SQL炼金术的人仍然有用。你知道吗
相关问题 更多 >
编程相关推荐