我正在使用flask-sessions扩展将用户会话存储在数据库中,现在尝试查询该表以获取存储的会话。会话表是通过以下方式创建的,
SqlAlchemySessionInterface(app, db, table='Session', key_prefix='')
现在,我想使用这样的模型查询调用获取所有条目,
Session.query.all()
但是由于SqlAlchemySessionInterface类的内部类中的Session类,因此我无法执行此操作。知道我如何去查询桌子吗?
下面完整的SqlAlchemySessionInterface类代码,
class SqlAlchemySessionInterface(SessionInterface):
serializer = pickle
session_class = SqlAlchemySession
def __init__(self, app, db, table, key_prefix, use_signer=False,
permanent=True):
if db is None:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
self.db = db
self.key_prefix = key_prefix
self.use_signer = use_signer
self.permanent = permanent
class Session(self.db.Model):
__tablename__ = table
id = self.db.Column(self.db.Integer, primary_key=True)
session_id = self.db.Column(self.db.String(255), unique=True)
data = self.db.Column(self.db.LargeBinary)
expiry = self.db.Column(self.db.DateTime)
def __init__(self, session_id, data, expiry):
self.session_id = session_id
self.data = data
self.expiry = expiry
def __repr__(self):
return '<Session data %s>' % self.data
# self.db.create_all()
self.sql_session_model = Session
答案 0 :(得分:0)
在您的代码中,应包含from flask_session import Session
和Session(app)
。
将Session(app)
的返回对象绑定到一个变量,例如sess
。
然后,session_model = sess._get_interface(app).sql_session_model
。
然后,您可以session_model.query.all()
。
关键点:查看Session的源代码。