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. Python3基础 global 使函数中的局部变量升格为全局变量

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. weka中算法说明[转]

    1) 数据输入和输出WOW():查看Weka函数的参数.Weka_control():设置Weka函数的参数.read.arff():读Weka Attribute-Relation File For ...

  3. js中拼接HTML方式方法及注意事项

    博主原创:未经博主允许,不得转载 在前端应用中,经常需要在js中动态拼接HTML页面,比如应用ajax进行局部刷新的时候,就需要在js中拼接HTML页面. 主要规则是将HTML页面的标签拼接为标签字符 ...

  4. 分布式事务之——tcc-transaction分布式TCC型事务框架搭建与实战案例(基于Dubbo/Dubbox)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/73731363 一.背景 有一定分布式开发经验的朋友都知道,产品/项目/系统最初为了 ...

  5. XML序列化、反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Run ...

  6. C++:为什么unique_ptr的Deleter是模板类型参数,而shared_ptr的Deleter不是?

    为什么unique_ptr的Deleter是模板类型参数,而shared_ptr的Deleter不是? template <class T, class D = default_delete&l ...

  7. Spring boot 中Hibernate 使用

    spring.jpa.properties.hibernate.hbm2ddl.auto=有四种配置方式,分别如下: 是hibernate的配置属性,其主要作用是:自动创建.更新.验证数据库表结构.该 ...

  8. Hadoop 部分截图

  9. Docker监控怎么做?

    http://dockone.io/article/1643 监控的价值与体系在运维体系中, 监控是非常重要的组成部分.通过监控可以实时掌握系统运行的状态,对故障的提前预警,历史状态的回放等,还可以通 ...

  10. [原][译][lua][luabridge]一个简单的luabridge与c++例子结合例子

    参考:https://eliasdaler.wordpress.com/tag/luabridge/ https://eliasdaler.wordpress.com/2015/08/10/using ...