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
posted on 2020-06-05 15:00  天道酬勤2016  阅读(231)  评论(0编辑  收藏  举报