SQLAlchemy存储session的基本配置 在数据库中的形式上什么样的?用表格举例

当使用flask - session结合SQLAlchemysession存储到数据库中时,根据你的配置,会创建一个名为db_session的表(假设你在配置中设置SESSION_SQLALCHEMY_TABLE = 'db_session')。这个表的结构大致如下:

列名类型说明
idString会话ID,唯一标识每个会话,前缀为配置中的SESSION_KEY_PREFIX(例如session:)加上实际的会话ID值。
session_dataLargeBinary序列化后的会话数据,包含了在应用中设置到session的所有键值对信息。
expiryDateTime会话的过期时间。如果设置了SESSION_PERMANENT = True,关闭浏览器时会话会失效,但在某些情况下(例如服务器端的会话管理策略),也可能会设置一个具体的过期时间。

例如,假设你有一个应用,通过session["uname"] = "xiaoming"session["age"] = 18设置了会话数据,并且SESSION_KEY_PREFIX = "session:",那么在db_session表中可能会有如下一条记录:

列名
idsession:123e4567 - e89b - 12d3 - a456 - 426614174000(这里123e4567 - e89b - 12d3 - a456 - 426614174000是一个示例会话ID)
session_data`b'\x80\x03}q\x00(X\x04\x00\x00\x00unameq\x01X\x08\x00\x00\x00xiaomingq\x02X\x03\x00\x00\x00ageq\x03K\x12u.' (这是经过序列化后的会话数据,具体内容因序列化方式而异)
expiry2024 - 01 - 01 12:00:00(假设的过期时间)

实际存储的session_data是经过序列化的二进制数据,在Python中,flask - session通常使用pickle模块进行序列化和反序列化。当应用需要获取会话数据时,flask - session会根据id从数据库中读取session_data,然后反序列化得到原始的会话数据。

要查看数据库中实际的数据,可以使用数据库客户端(如MySQL Workbench 连接到你的MySQL数据库,然后执行SELECT * FROM db_session;这样的SQL语句来查看表中的记录。

在代码层面,如果使用SQLAlchemy的inspect工具,也可以获取表结构信息,示例代码如下:

from sqlalchemy import inspect

# 假设db是已经初始化好的SQLAlchemy实例
inspector = inspect(db.engine)
columns = inspector.get_columns('db_session')
for column in columns:
    print(column['name'], column['type'])

这段代码会打印出db_session表中每列的名称和类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值