zoukankan      html  css  js  c++  java
  • Flask-sqlalchemy使用alembic迁移模型_示例1

    应用场景:使用alembic建立数据库表,在项目开发过程中,根据需求增加字段

    系统环境:已安装Flask-sqlalchemy、alembic

    示例项目结构:

     作业步骤:

    1、在项目文件夹myDemo下,建立apps文件夹,在apps下建立模型文件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)

    2.从命令行进入项目文件夹,启动虚拟环境,输入如下指令:

       alembic init alembic

       则在项目myDemo下生成alembic.ini文件和alembic文件夹

       关键点,需修改alembic.ini文件alembic文件夹里的env.py文件里的相应内容

    3.修改alembic.ini

       打开alemibic,找到sqlalchemy.url = driver://user:pass@localhost/dbname

       根据自己所使用的数据库进行相应修改,我这个Demo使用的是mySql数据库,连接用户是root,连接口令是123456,测试数据库是db_mytest

       则可修改为:

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

    4.修改env.py

      打开alembic文件夹里的env.py,增加如下部分:

    import os
    import sys
    from apps.models import Base
    sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../")

     找到target_metadata = None,改为:

    target_metadata = Base.metadata

    5.进入在命令行,当前项目文件夹下,输入下面指令,生成数据迁移文件

     alembic revision --autogenerate -m "my first commit"

    其中,"my first commit"可以修改

    如果生成顺利,则会在alembic文件夹下的version文件夹里生成一个xxx.py版本文件

    6.把数据迁移文件里的内容更新到数据库里

      需在mysql数据库里先建立测试数据库db_mytest

      执行指令:

    alembic upgrade head

     则把最新的数据迁移文件里的内容更新到数据库里,如果是初次执行,则会在db_mytest里建立相应的表

    7.如果在项目开发过程中,某个表新增了字段,那么执行上面的5、6两步骤,修改第5步里的"my first commit",视情况修改此描述,生成好迁移文件,更新到数据库中

    8.下面是项目文件,仅供参考。

    链接:https://pan.baidu.com/s/1vBsWcbdTWs-SYH9jdXVMVg 提取码:k38i

    import os
    import sys
  • 相关阅读:
    专题3.基金投资与策略(中低风险
    专题1. 投资理财概述与货币市场工具(低风险)
    七.风险防范与风险控制(风险分析)
    八.投资组合与估值
    五.固定收益类产品投资策略(投资分析)
    软考倒计时19天
    前三章
    软考倒计时21天:9大管理工具技术
    软考倒计时22天
    软考倒计时23天
  • 原文地址:https://www.cnblogs.com/SH170706/p/13049774.html
Copyright © 2011-2022 走看看