我想创建一个自定义方法来告诉我数据库中是否存在行。SQLAlchemy exists方法返回子查询,但不执行任何操作,所以我想创建does_exist方法,该方法只返回True或False。下面是我的代码:
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
发布于 2018-05-31 17:04:26
尽管没有文档记录,但Query对象使用的会话可以像这样访问
self.session因此,您更通用的CustomBaseQuery可能如下所示
class CustomBaseQuery(BaseQuery):
def does_exist(self):
return self.session.query(self.exists()).scalar()https://stackoverflow.com/questions/50620180
复制相似问题