【发布时间】:2011-07-16 15:52:52
【问题描述】:
使用SQLAlchemy ORM(声明形式),您如何以编程方式根据字典中的一组条件创建查询?
我希望在用户表中搜索与以前在字典中收集的某些条件匹配的记录。我无法提前知道将使用哪些字段,并且必须能够处理一些字段是整数,一些是字符串,可以有很多不同的字段等等。
例子:
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”还不够强大,无法靠我自己找到解决方案。 :)
【问题讨论】:
-
您想按 name='...' AND email='...' 查询?
标签: python sqlalchemy declarative