zoukankan      html  css  js  c++  java
  • tornado-版本迁移工具alembic

    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/dbname
    sqlalchemy.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个版本

  • 相关阅读:
    IE的F12开发人员工具不显示问题
    CENTOS 6.5 平台离线编译安装 PHP5.6.6
    PHP 5.6 编译安装选项说明
    CENTOS 6.5 平台离线编译安装 Mysql5.6.22
    CENTOS 6.5 平台离线安装 Apache2.4
    Bringing Whoops Back to Laravel 5
    在 Laravel 中使用图片处理库 Integration/Image
    让 windows 下的命令行程序 cmd.exe 用起来更顺手
    Laravel Composer and ServiceProvider
    VisualStudio2013 如何打开之前版本开发的(.vdproj )安装项目
  • 原文地址:https://www.cnblogs.com/tangpg/p/9469408.html
Copyright © 2011-2022 走看看