四十七:数据库之alembic数据库迁移工具的基本使用

在一般情况下,如果修改了模型,如增加或者删除了字段,SQLAlchemy是不会更新的,这就需要使用alembic来实现

使用alembic步骤:
一:定义好模型
二:使用alembic创建一个仓库:alembic init 仓库名
三:修改配置文件
1、在alembic.ini中,给SQLAlchemy.url设置数据库的连接方式,这个连接方式与SQLAlchemy的方式一样
2、在alembic/env.py中的target_metadata设置模型的Base.metadata,前提是要导入Base.metadata
四:将ORM模型生成迁移脚本:alembic revision --autogenerate -m ‘message‘
五:将生成的脚本映射到数据库中:alembic upgrade head
六:以后如果修改了模型,重复4/5步骤
七:想要使用alembic命令,需要进入到安装了alembic的虚拟环境中,不然就无法使用

在命令行,激活虚拟环境

修改配置文件

alembic revision --autogenerate -m ‘first_commit‘

alembic upgrade head

添加字段

alembic revision --autogenerate -m ‘add_age_colunm‘

alembic upgrade head

原文地址:https://www.cnblogs.com/zhongyehai/p/11831189.html

时间: 2024-10-09 08:49:40

四十七:数据库之alembic数据库迁移工具的基本使用的相关文章

QT开发(四十七)——数据库驱动层

QT开发(四十七)--数据库驱动层 驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁,主要类包括Qt SQL模块中的QSqlDriver.QSqlDriverCreator.QSqlDriverCreatorBase.QSqlDriverPlugin和QSqlResult. 一.QSqlDriver QSqlDriver是访问具体SQL数据库的抽象基类,不能直接使用.如果要创建自定义的数据库驱动,可以根据需要重写QSqlDriver类的纯虚函数和虚函数. 自定义数据库驱动 QSqlData

QT开发(四十六)——QT数据库编程基础

QT开发(四十六)--QT数据库编程基础 一.Qt SQL模块简介 1.Qt SQL模块简介 QT通过Qt SQL模块提供了对SQL数据库的支持,Qt SQL模块中的API分为三层:驱动层.SQL接口层.用户接口层. 如果要使用Qt SQL模块中的类,需要在工程文件(.pro文件)中添加QT += sql代码. 2.驱动层 驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁,主要类包括Qt SQL模块中的QSqlDriver.QSqlDriverCreator.QSqlDriverCreat

Android基础之十四数据存储 之 SQLite数据库详解

Android基础之十四数据存储 之 SQLite数据库详解 SQLite 是一款 轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百 K 的内存就足够了,因而特别适合在移动设备上使用. SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID( 原子性(Atomicity) .一致性(Consistency) . 隔离性(Isolation) . 持久性(Durability))事务,所以只要你以前使用过其他的关系型数据库,就可以很快地上手 SQLite.而

Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?

Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的? ??如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一样,本篇文章最最核心的要点就是 SqlSession实现数据库操作的源码解析.但按照惯例,我这边依然列出如下的问题: 1. SqlSession 是如何被创建的? 每次的数据库操作都会创建一个新的SqlSession么?(也许有很多同学会说SqlSession是通过 SqlSessionFactor

持久化API(JPA)系列(四)管理器EntityManager--执行数据库更新

EntityManager是应用访问持久化上下文中的实体的接口,用来对实体Bean进行操作.我们可以使用它来创建.删除.修改持久化的实体,以体现到数据库中:也可以从数据库中查询得到实体或实体列表.所有的这些操作都是通过实体管理器进行的. 本文将首先讲解EntityManager对象的引用方式,然后讲解使用EntityManager的操作函数实现数据库的各种操作,包括以下内容. 持久化实体persist():往数据表中插入数据. 删除实体remove():从数据表中删除记录. 更新实体merge(

NoSQL数据库之Redis数据库:Redis的介绍与安装部署

 NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显的力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展. NoSQL的特点: 特点一: 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准.ACID属性.表结构等等,这

数据库第一天-数据库索引

一.使用索引的好处 创建索引可以大大提高系统的性能.第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因.第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 二.索引的原理 数据在磁盘上是以块的形式存储的(涉及到了数据结构和操作系统).为确保对磁盘操作的原子性,访问数据的时候会一并访问所有数据块. 鉴于很多记录只能做到按一个字段排序,所以要查询某个未经排序的字段,就需要使用线性查找,即要访问N个数

mysql数据库和mongodb数据库的相关操作以及两个数据库的区别

在docs命令中执行数据操作 MySQL数据库 先启动MySQL服务器  net start mysql 进入MySQL服务器MySQL -uroot -p(这里写你的数据库密码) (-P是从哪个端口进) 我第一次操作是就是因为电脑上 有 MySQL  MySQL57 MySQLla 三个服务 引起端口冲突 导致 我 找不到相应的数据 数据库操作 create database   创建数据库 show databases   显示MySQL服务上的数据库 use  数据库          使

学习oracle数据库引航三——数据库对象

一.表-段 表分区:便于进行删除操作等. 可以直接删除分区表(迅速). 使用while等条件时效率高. 二.索引 提高查询速度 影响DML(更新.插入.删除)效率 更新表内容同时也要更新索引的内容. 三.数据库链 database link 两台数据之间 基于分布式事务的机制. 四.表空间 可以有多个数据文件 学习oracle数据库引航三--数据库对象,布布扣,bubuko.com