我想创建一个自定义方法来告诉我数据库中是否存在一行。 SQLAlchemy exists
方法返回一个子查询,但不执行任何操作,因此我想创建方法 does_exist
,它将简单地返回 True
或错误
。这是我的代码:
from flask_sqlalchemy import SQLAlchemy, BaseQuery, Model
class CustomBaseQuery(BaseQuery):
def does_exist(self):
return db.session.query(self.exists()).scalar()
db = SQLAlchemy(app, query_class=CustomBaseQuery)
这确实有效,但在方法体内引用db.session
似乎是错误的,因此这取决于稍后命名 SQLAlchemy 实例db
。我想找到一种以更通用的方式引用最终的 db.session 对象的方法。
完整的工作示例在这里:https://gist.github.com/wbruntra/3db7b630e6ffb86fe792e4ed5a7a9578
最佳答案
尽管没有记录,Query
对象使用的 session 可通过以下方式访问
self.session
所以你的更通用的CustomBaseQuery
可能看起来像
class CustomBaseQuery(BaseQuery):
def does_exist(self):
return self.session.query(self.exists()).scalar()
关于python - 在自定义 Flask-SQLAlchemy 查询方法中使用 SQLAlchemy session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50620180/