SQLAlchemy 自动分表

本文介绍了如何使用 SQLAlchemy 扩展将数据库中的表自动映射为 ORM 类,特别展示了如何处理自动分表的情况,例如针对系统日志表按月创建新分表,以实现动态操作对应时间段的数据。
摘要由CSDN通过智能技术生成

将数据库中的表自动映射ORM类

SQLAlchemy 中提供了将数据库中的表自动映射为ORM类的扩展(sqlalchemy.ext.automap)。

  1. 基本用法

最简单用例是将一个已存在的数据库映射为新的model。

from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine

Base = automap_base()

# 我们假设数据库中存在两张表 `user` 和 `address`。
engine = create_engine("sqlite:///mydatabase.db")
# 将数据库中的表全部映射到 Base.classes 中
Base.prepare(engine, reflect=True)
# 映射类的默认名为数据表的名称
# 可以通过数据表名访问
User = Base.classes.user
Address = Base.classes.address

session = Session(engine)
# 对象关联关系
session.add(Address(email_address="foo@bar.com", user=User(name="foo")))
session.commit()
  1. 从存在的 MetaData 中生成映射
from sqlalchemy import create_engine, MetaData, Table, Column, ForeignKey
from sqlalchemy.ext.automap import automap_base

engine = create_engine("sqlite:///mydatabase.db")

# 实例化 MetaData 对象
metadata = MetaData()

# 仅映射 only 中指定的表
metadata.reflect(engine, only=['user', 'address'])

# 或者映射我们创建的Table 对象
Table('user_order', metadata,               
    Column('id', Integer, primary_key=True),               
    Column('user_id', ForeignKey('user.id'))           
)

# 传入 metadata 
MetaData.Base = automap_base(metadata=metadata)
# 调用 prepare 方法 建立映射关系
Base.prepare()

# 获取映射的类
User
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值