使用 SQLAlchemy ORM(声明式),如何以编程方式根据字典中的一组条件创建查询?
我希望在 users 表中搜索那些符合先前在字典中收集的某些条件的记录。我无法事先知道将使用哪些字段,并且必须能够处理一些字段是整数,一些是字符串,可以有很多不同的字段等。
例子:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
请求了两个查询,结果如下:
q1_dict = {'id' : 177}
q2_dict = {'name' : 'Johnny', 'email' : 'johnny@somewhere.com'}
是否有任何简单/通用的方法可以从这两个字典创建我的查询,仅依赖于键与 User 类的属性相匹配的事实,同时正确处理类型,自动转义不安全值等?
我花了几个小时在谷歌上搜索这个,并浏览了 SQLAlchemy 文档,但似乎找不到任何好的答案/示例。
解决方案:
所以,在你们的帮助下,解决方案似乎很简单:
User.query.filter_by(**q1_dict)
User.query.filter_by(**q2_dict)
...获取示例中所需的两个查询。
dagoof,我已经查看了您提供的链接,但我想我的“python”还不够强大,无法自行解决问题。 :)
请您参考如下方法:
