如何访问python内部类内部的方法?

时间:2019-06-17 12:19:05

标签: python flask flask-sqlalchemy

我正在使用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

1 个答案:

答案 0 :(得分:0)

在您的代码中,应包含from flask_session import SessionSession(app)

Session(app)的返回对象绑定到一个变量,例如sess

然后,session_model = sess._get_interface(app).sql_session_model

然后,您可以session_model.query.all()

关键点:查看Session的源代码。