python - 在自定义 Flask-SQLAlchemy 查询方法中使用 SQLAlchemy session

标签 python sqlalchemy flask-sqlalchemy

我想创建一个自定义方法来告诉我数据库中是否存在一行。 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/

相关文章:

python - 如果单词小于 X,则在列表理解中进行词形还原

Python-requests 如何在发布前调用 js 函数计算一些值?

python - Postgres/SQL炼金术 : no matching unique constraint

python - 如何使用python在不影响相应行的情况下用空白交换行中的重复项?

python - 尽管使用推荐的方法来阻止此操作,pyinstaller 仍然打开控制台

Python SQLite 错误绑定(bind),带字符串的类型不受支持

database - 在 SQLAlchemy 中拆分参数过多的查询

python - SQLAlchemy SSL SYSCALL超时应对机制

python - Flask - WTForm - 将表单保存到数据库

python - jsonify flask-sqlalchemy flask中的多对一关系