tornado-版本迁移工具alembic

一曲冷凌霜 提交于 2020-02-12 21:05:57

pip install pymysql

pip install sqlalchemy

pip install alembic

 

1.connect db_config.py

#coding=utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接数据库的数据
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'tornado1'
USERNAME = 'admin'
PASSWORD = 'Root110qwe'
# DB_URI的格式:dialect(mysql/sqlite)+driver://username:password@host:port/database?charset=utf8
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,
                                                              PASSWORD,
                                                              HOSTNAME,
                                                              PORT,
                                                              DATABASE
                                                              )


# 1、创建一个engine引擎
engine = create_engine(DB_URI, echo=False )
# 2、sessionmaker生成一个session会话类
Session = sessionmaker(bind=engine)
# 3、创建一个session会话实例
dbSession = Session()
# 4、创建一个模型基类
Base = declarative_base(engine)

2.建立模型

from sqlalchemy import Column, Integer, String, DateTime

from libs.db.db_config import Base


class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), unique=True, nullable=False)
    password = Column(String(50), nullable=False)
    
    def __repr__(self):
        return '<User #{}: {}>'.format(self.id, self.name)

 3.alembic的使用 参考资料:https://segmentfault.com/a/1190000014643385

在项目主目录下执行命令:初始化 alemibic init name

需要修改alembic.ini 文件  line 38

# sqlalchemy.url = driver://user:pass@localhost/dbnamesqlalchemy.url = mysql+pymysql://root:password@localhost:3306/tornado_db1

需要修改env.py文件 line 20

sys.path.append(os.getcwd())from models.auth.model import Base  # note: 该Base必须从表model中导入,而不能从之外的地方导入(会找不到表,迁移为空)target_metadata = Base.metadata

再执行命令:记录版本 alembic revision --autogenerate -m "add user model"

更新数据到数据库:alembic upgrade head

另外版本管理:

  alembic history  查看版本

  alembic downgrade -n    回退n个版本

  alembic upgrade +n  前进n个版本

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!