• Flask-sqlalchemy使用alembic迁移模型_示例2


    Flask-sqlalchemy使用alembic迁移模型示例2

    与示例1略有区别

    区别在两个文件models.py和env.py

    示例1里的models.py里的内容:

    from sqlalchemy import Column,Integer,String,create_engine,Text
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    Base = declarative_base()
    class User(Base):
        __tablename__ = 'tbUser'
    
        id = Column(Integer,primary_key=True)
        username = Column(String(20),nullable=False)
        password = Column(String(100),nullable=False)
        sex = Column(String(2),nullable=False)
    
    class Article(Base):
        __tablename__ = 'tbArticle'
    
        id = Column(Integer,primary_key=True)
        title = Column(String(100),nullable=False)
        content = Column(Text, nullable=False)

    示例2models.py里的内容:

    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, String, Integer
    from apps import config
    from apps.exts import db
    
    class User(db.Model):
        __tablename__ = "tbuser"
        uid = db.Column(db.Integer, primary_key=True, autoincrement=True)
        username = db.Column(db.String(50), nullable=False)
        _password = db.Column(db.String(100),nullable=False)
        addr = db.Column(db.String(30),nullable=False)

    区别在于类名后括号里一个是Base,一个是db.Model

    初始项目文件结构

    1.从命令行进入项目文件夹,进入虚拟环境,输入指令:alembic init alembic

    2.编辑alembic.ini

    找到sqlalchemy.url = driver://user:pass@localhost/dbname

    修改为:sqlalchemy.url = mysql+pymysql://root:123456@localhost/db_mytest

    3.编辑alembicenv.py

    增加下面语句

    import os
    import sys
    sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../")

    ...

    在下面找到target_metadata = None,在这句话前增加import apps.models,把target_metadata=None改为target_metadata=apps.models.db.Model.metadata

    如下:

    import apps.models
    target_metadata = apps.models.db.Model.metadata

    4.执行指令:alembic revision --autogenerate -m "first commit"

     正常情况下会在alembicversion文件夹下生成迁移文件

    5.执行指令:alembic upgrade head

    则把models.py里定义的表生成到数据库db_mytest里

    6.注意事项,如果反复生成进行测试,请先把db_mytest里的表给清理掉

    7.项目文件参考,如下:

    链接:https://pan.baidu.com/s/12sk5jDo7R7uVnfLYSnE3qQ
    提取码:2srb

     

  • 相关阅读:
    PyCharm安装及其使用
    web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建
    Unittest单元测试框架
    selenium IDE下载安装(For Chrome and firefox)
    视频上传测试点
    web端自动化——自动化测试准备工作
    selenium3+Python3+sublime text3自动化登录
    Sublime Text3安装及常用插件安装
    web端自动化——selenium3用法详解
    Selenium2+python自动化2.7-火狐44版本环境搭建(转)
  • 原文地址:https://www.cnblogs.com/SH170706/p/13052686.html
Copyright © 2020-2023  润新知