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