zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    Python-2d形变 动画 表格
    Python-JS (JS介绍~JS的基础数据类型)
    Python-CSS高级 题目
    Python-ccs动画及阴影
    Python-css高级
    Python3 shevel模块,更高级的json序列化数据类型模块(比pickle更高级)
    Python3 第五周大纲(模块,导入方法、import本质,导入优化,模块的分类)
    python3 5月26日 time模块常用时间转换 &datetime()模块学习 random()
    Python软件目录结构
    Python3 json &pickle 数据序列化
  • 原文地址:https://www.cnblogs.com/SH170706/p/13052686.html
Copyright © 2011-2022 走看看