FastApi上使用alembic
笔记
alembic orm模块使用
安装
pip install alembic
使用
# 初始化
alembic init alembic
#alembic.ini 配置数据库
sqlalchemy.url = mysql+pymysql://root:admin123@127.0.0.1:3306/db_name
'''创建\db\base_class.py 定义sqlalchemy Base类定义'''
from datetime import datetime
from sqlalchemy.ext.declarative import as_declarative
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy import *
@as_declarative()
class Base:
id: int
__name__: str
create_at: DateTime = Column(DateTime, default=datetime.now, comment="创建时间")
update_at: DateTime = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="更新时间")
'''如果没有指定__tablename__ 则默认使用model类名转换表名字'''
@declared_attr
def __tablename__(cls) -> str:
return cls.__name__.lower()
'''创建\db\base.py 导入模型表给ale'''
from db.base_class import Base
#\alcmbic\env.py 配置Base基类
import os,sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from db.base import Base
target_metadata = Base.metadata
接下来和django一样定义models.py
'''创建模型类继承Base'''
from sqlalchemy import Column, Integer, Text, String,ForeignKey
from sqlalchemy.orm import relationship
from db.base_class import Base
class Good(Base):
__tablename__="good"
# 商品基类
id = Column(Integer,primary_key=True,index=True,autoincrement=True)
name = Column(String(60),comment='名字')
# 从写部位
positions_id = Column(Integer,ForeignKey("position.id"),comment="部位")
positions = relationship('Position', back_populates='Good2position')
image = relationship("Imgs",back_populates='good2img')
# db\base.py
导入模型表给ale
from models import Good
alembic revision --autogenerate -m '' 提交
alembic upgrade head 升级
类似django的
python manage.py makemigrations
python manage.py migrate

浙公网安备 33010602011771号