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,进行数据库结构管理,升级,加表,加项的更多相关文章

  1. 用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 Alembic 查看指令 manager db 的可用选项 ...

  2. 在Rainbond中实现数据库结构自动化升级

    Rainbond 这款产品一直致力于打通企业应用交付的全流程,这个流程中不可或缺的一环是企业应用的不断升级.迭代.Rainbond 特有的能力,是可以将囊括多个服务组件的企业应用系统进行打包,并执行一 ...

  3. 数据库服务概述,构建MYSQL服务器,数据库基本管理,mysql数据类型,表结构的调整

                                                            数据库的发展前引 MySQL的起源与发展过程 最为著名.应用最广泛的开源数据库软件 最早 ...

  4. [转]oracle学习入门系列之五内存结构、数据库结构、进程

    原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...

  5. Oracle数据库结构

    之前写了一篇文章<Oracle-知识结构漫谈> 粗略的介绍了Oracle数据库接口,在这里再更加详细的描述一下,当做是对原有知识的巩固,温故知新. Oracle体系结构数据库的体系结构是从 ...

  6. Spring中的数据库事物管理

    Spring中的数据库事物管理 只要给方法加一个@Transactional注解就可以了 例如:

  7. 用 Flask 来写个轻博客 (20) — 实现注册表单与应用 reCAPTCHA 来实现验证码

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 reCAPTCHA 应用 reCAPTCHA 前文列表 用 Flask ...

  8. 三十.数据库服务概述 构建MySQL服务器 、 数据库基本管理 MySQL数据类型

    mysql50:192.168.4.50 1.构建MySQL服务器 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认MySQL服务程序运行.root可控 ...

  9. Database基础(一):构建MySQL服务器、 数据库基本管理 、MySQL 数据类型、表结构的调整

    一.构建MySQL服务器 目标: 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认 ...

随机推荐

  1. POJ1251 Jungle Roads (最小生成树&Kruskal&Prim)题解

    题意: 输入n,然后接下来有n-1行表示边的加边的权值情况.如A 2 B 12 I 25 表示A有两个邻点,B和I,A-B权值是12,A-I权值是25.求连接这棵树的最小权值. 思路: 一开始是在做莫 ...

  2. 【命令】Linux常用命令

    常用指令 ls 显示文件或目录ls -f 查看目录中的文件 ls -l 列出文件详细信息l(list) ls -a 列出当前目录下所有文件及目录,包括隐藏的a(all)ls *[0-9]* 显示包含数 ...

  3. 51nod 1284 2 3 5 7的倍数

    从1到N 里 是2的倍数 有 N/2 个 然后大概看过这类的blog  所以运用容斥原理 直接计算 是 2 3 5 7 的个数都是多少 然后用N 减去 就是 不是2 3 5 7 的个数了 (离散好像也 ...

  4. [BZOJ1060][ZJOI2007]时态同步 树形dp

    Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...

  5. js媒体查询设置根字号

    !function(n){var e=n.document,t=e.documentElement,i=750,d=i/50,o="orientationchange"in n?& ...

  6. [JavaScript] - form表单转json的插件

    jquery.serializejson.js 之前好像记录过,做项目又用到了再记下 在页面中引入js后就可以使用了 示例: //点击设置微信信息的form表单提交按钮后,执行wxConfig的con ...

  7. C#学习笔记(三):逻辑关系运算符和if语句

    条件语句 分支语句和循环语句是程序里最重要的逻辑. IF语句.分支语句.循环语句 using System; using System.Collections.Generic; using Syste ...

  8. 【Coursera】Third Week(2)

    拾遗 Steve Jobs与World Wide Web 如果你有仔细观察Robert Cailliau的视频的话,你会发现他工作所用的电脑为NeXT电脑. Jobs 也对web 产生了一定的影响,众 ...

  9. spoj TBATTLE 质因数分解+二分

    题目链接:点击传送 TBATTLE - Thor vs Frost Giants #number-theory #sliding-window-1 Thor is caught up in a fie ...

  10. Python写ROS 订阅与发布程序

    1. 编写talker代码 vim ..../src/talker.py #!/usr/bin/env python # license removed for brevity import rosp ...