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
posted @ 2021-05-25 09:20  古林晶  阅读(896)  评论(0)    收藏  举报