flask使用alembic,进行数据库结构管理,升级,加表,加项
Posted 上官飞鸿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask使用alembic,进行数据库结构管理,升级,加表,加项相关的知识,希望对你有一定的参考价值。
1.安装扩展,在虚拟环境中安装 alembic,不懂可以去看pycharm的系列文章。
2.初始化, 使用 Alembic 前需要通过 alembic init 命令创建一个 alembic 项目,该命令创建一个 alembic.ini 配置文件和一个 alembic 档案目录(YOUR_ALEMBIC_DIR)。
一般命令是 alembic init migrate
我这windows环境,又不想设置那么多环境变量,用pycharm,
参考以下配置:
File--Settings--tools--External Tools
用右边的加号自己创建一个新的。
Name是你会在菜单里看到的。如果想用下划线,多给几个吧,一个下划线,看不清楚
Program:是alembic的位置,这个是我的虚拟环境中alembic的位置。
Parameters:就是可选的命令参数了。
Working directory:就是执行这个命令的位置。
Group:你可以为你的这个项目起个名字,作为一个组存在你的菜单。有时候写多个项目,运行错可不好。
这是刚才设置的效果
试着运行一下吧。
会在项目文件夹下生成migrate目录和alembic.ini文件
3.配置:
修改alembic.ini,配置数据库连接。
注释掉原来的,写上我们自己的。路径以项目路径为开始,也就是我们设置的工作目录
;sqlalchemy.url = driver://user:pass@localhost/dbname sqlalchemy.url =sqlite:///Plan.db
配置migrate/env.py,配置数据模型。
# target_metadata = None import os import sys sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../") from config.DBconfig import Base target_metadata = Base.metadata
找到自己的路径,然后引入sqlalchemy 的Base
如果有多个models
...
from models import page, tag
target_metadata = [page.Base.metadata, tag.Base.metadata]
...
4.生成升级数据库的脚本文件
alembic revision --autogenerate
5.执行升级
alembic upgrade head
声成脚本和执行升级都可以按init命令写进pycharm的扩展。
暂时使用的是sqlite3 不支持DROP命令,但是改名的时候,自动化命令是这样的:
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column(\'carriage\', sa.Column(\'last_A66\', sa.DateTime(), nullable=True)) op.drop_column(\'carriage\', \'last_A6\') # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column(\'carriage\', sa.Column(\'last_A6\', sa.DATETIME(), nullable=True)) op.drop_column(\'carriage\', \'last_A66\') # ### end Alembic commands ###
alembic 是删除一条,再键一条,暂时也不研究了。
记得不要删除和更名,增加条目就一切正常。
弃用条目就好了。
以上是关于flask使用alembic,进行数据库结构管理,升级,加表,加项的主要内容,如果未能解决你的问题,请参考以下文章