1. alembic [--config */alembic.ini ] current

2. alembic revision -m "add columns"

编辑生产的模板文件,更新upgrade/downgrade

  如何编辑见后文。

3. alembic upgrade head[or version]

4. alembic downgrade -1

5. 编写模板文件 修改upgrade downgrade

revision = '...'
down_revision = '...' from alembic import op
import sqlalchemy as sa def upgrade():
pass def downgrade():
pass

1)新建table

  op.create_table(
    'account',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.Column('nickname', sa.String(length=48), nullable=False),
    sa.Column('identityID', sa.String(length=255), nullable=False),
    sa.PrimaryKeyConstraint('id'),
    mysql_ENGINE='InnoDB',
    mysql_DEFAULT_CHARSET='UTF8'
  )   op.create_unique_constraint(
    "uniq_account0identityID",
    "account", [identityID])
or
  op.create_table(
    'account',
    ......
  sa.UniqueConstraint('identityID',
             name='uniq_account0identityID')
    ......
  )

2)新增column

  op.add_column('account',
           sa.Column('age', sa.Integer(), nullable=False))
or
  op.alter_column('account', 'age',
           new_column_name='sex',
existing_type=sa.Integer())

3)重命名table

  op.rename_table('account', 'tb_account')

4)删除table

  op.drop_table('account')

5)创建外键

  op.create_foreign_key(
          "fk_user_address", "address",
          "user", ["user_id"], ["id"])

6)执行sql

    marital_status_column = sa.Column('maritalStatus', sa.Boolean(), default=False)
op.add_column('account', marital_status_column)
account = sa.sql.table('baymodel', marital_status_column)
op.execute(
account.update().values({'maritalStatus': True})
)

7)sqlalchemy主要types

sa.Integer()
sa.String(length=255)
sa.DateTime()
sa.Text()
sa.Boolean()

alembic 实践操作的更多相关文章

  1. kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)

    kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点. 算法原理: (1) 随机选取k个中心点: (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为 ...

  2. Jasperreport+ireport 实践操作及web应用

    Jasperreport+ireport 实践操作及web应用   学习完jasperreports+ireport,给我感觉深刻,不仅掌握了报表开发技术,还掌握了怎样在web中生成pdf,xls,r ...

  3. Oracle delete和truncate实践操作之一

    实践说明 本文章主要记录在Oracle中,delete和truncate进行数据删除之后,如何进行数据恢复.由于网上对delete和truncate的区别说明较多,此处不过多介绍两者区别. 注:由于环 ...

  4. Redis实践操作之—— keyspace notification(键空间通知)

    一.需求分析: 设置了生存时间的Key,在过期时能不能有所提示? 如果能对过期Key有个监听,如何对过期Key进行一个回调处理? 如何使用 Redis 来实现定时任务? 二.序言: 本文所说的定时任务 ...

  5. github实践操作

    一.本地仓库的创建和提交 1.下载并安装Git http://msysgit.github.io/,安装完成后在本地电脑创建一个git仓库并初始化本地仓库 2.在git目录下创建一个Readme.tx ...

  6. MySQL主从复制的原理和实践操作

    MySQL 主从(MySQL Replication),主要用于 MySQL 的实时备份.高可用HA.读写分离.在配置主从复制之前需要先准备 2 台 MySQL 服务器. 一.MySQL主从原理 1. ...

  7. memcached 的实践操作

    memcached安装和使用   yum install -y libevent  memcached  libmemcached   启动命令:   /etc/init.d/memcached st ...

  8. CMake实践--操作

    ---<Cmake 实践>--- ---Ubuntu 14.04 1.创建一个cmake文件目录 mkdir -p ~/cmake 2.在cmake文件下创建t1子目录 cd ~/cmak ...

  9. jquery 实践操作:iframe 相关操作

    此篇记录关于HTML 的 iframe 元素 的相关记录 定义:iframe 元素会创建包含另外一个文档的内联框架(即行内框架). 常用的基本 iframe 设置(详细设置属性参考API:http:/ ...

随机推荐

  1. python学习之路(16)

    Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是 ...

  2. PHPSESSID的cookie//session_start()

    如果PHP脚本中有: 1 session_start(); 则说明使用了SESSION. SESSION是一种机制,可以在服务器端跨文件暂时保存数据或传递数据,常用于购物车等方面. SESSION只在 ...

  3. Kotlin的高阶函数和常用高阶函数

    Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...

  4. C++入门经典-例5.2-使用指针比较两个数的大小

    1:代码如下: // 5.2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  5. 【git】本地git bash连接远程库github

    重要参考: https://www.liaoxuefeng.com/wiki/896043488029600 https://segmentfault.com/a/1190000003728094 正 ...

  6. BOSCH汽车工程手册————混合驱动

    首先放一波资源,一千两百多页的pdf 链接:https://pan.baidu.com/s/15IsvHqOFCnqAKwY_SR4-lA提取码:6wmz 混合驱动 混合驱动有串联驱动并联驱动以及两种 ...

  7. 使用ajax获取servelt数据乱码

    修改tomcat编码 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout=" ...

  8. 搭建SVN服务器时报错:0x80004002

    一.错误信息 Cannot query proxy blanket: no such interface supported (0x80004002) 二.解决方案 这个错误只会在有NVIDIA独立显 ...

  9. SVN 清理失败解决方案

    SVN有时因各种不明原因导致清理失败,可以采取如下解决办法进行处理: 方法一: 删除根目录下隐藏文件夹“.svn” 然后在根目录文件夹 外面的空白处 检出.比如你项目文件夹名为“D:/source” ...

  10. Tensorflow Lite tflite模型的生成与导入

    假如想要在ARM板上用tensorflow lite,那么意味着必须要把PC上的模型生成tflite文件,然后在ARM上导入这个tflite文件,通过解析这个文件来进行计算. 根据前面所说,tenso ...