sql动态查询

https://codeday.me/bug/20180318/145857.html

所以我有一个从网页传递的dict。我想基于dict动态构建查询。我知道我可以做:

 

 

session.query(myClass).filter_by(**web_dict)

但是,仅当值完全匹配时才起作用。我需要做“像”过滤。我最好的尝试使用__dict__属性:

 

for k,v in web_dict.items():
    q = session.query(myClass).filter(myClass.__dict__[k].like('%%%s%%' % v))

不知道如何从那里构建查询。任何帮助都是极好的

 

首先要做的不同之处是访问属性使用getattr,而不是__dict__; getattr将始终做正确的事情,即使(对于更复杂的模型而言),映射属性不是列属性。

另一个缺失的部分是您可以多次指定filter(),只需用该方法调用的结果替换旧的查询对象。所以基本上

 

q = session.query(myClass)
for attr, value in web_dict.items():
    q = q.filter(getattr(myClass, attr).like("%%%s%%" % value))

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值