我正在尝试在 SQLalchimy 中添加一个持久性 SQL where 子句。 基本上我有一个包含特定字段的表,我希望我的所有请求都添加一个 where 子句,所以这个字段匹配一个子句。
例如,如果我的要求是
session.query( MyTable ).all()
我希望生成的请求是这样的:
SELECT * FROM Table WHERE specific_field = 'some_value';
有没有一种方法可以在不为每个请求添加过滤器的情况下执行此操作?
提前致谢。
最佳答案
如果你添加:
dbengine.echo = True
session.query(MyTable).filter_by(specified_field = 'some_value').all()
我不确定您所说的“不为每个请求添加过滤器”是什么意思。我的猜测是您不想在客户端过滤请求。为此生成的 SQL 应该看起来很像您所要求的; dbengine.echo = True
位将显示生成的 SQL。
根据 OP 评论更新:
如果你真的希望所有的查询都有一个过滤器,那么一个简单的(但在我看来不太好)的方法是添加你自己的查询方法:
def myquery(self, table):
self.query(table).filter_by(specified_field = 'some_value')
session.__class__.some_arbitrarily_filtered_query = myquery
之后,您可以调用(例如):
session.some_arbitrarily_filtered_query(MyTable).all()
关于python - 持久性 where 子句 SQLAlchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5433921/