alembic

2024-02-27 11:20
文章标签 alembic

本文主要是介绍alembic,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

alembic是sqlalchemy的作者开发的。
用来做OMR模型与数据库的迁移与映射。

第一个,alembic的所有命令都是以alembic开头
第二,alembic的迁移文件也是通过版本进行控制的。首先,通过pip install alembic进行安装。

以下将解释alembic的用法
方便数据库与ORM模型的迁移与映射

一.项目开始前就应用
1.alembic 安装

pip install alembic==1.10.4

pip install pymysql==1.0.3

2.alembic用法
先创建好ORM模型
这里默认的sqlalchemy2.0版本

from sqlalchemy import create_engine, Column, String, Integer
from sqlalchemy.orm import DeclarativeBaseDIALCT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "123456"
HOST = "127.0.0.1"
PORT = "3306"
DATABASE = "alembic_demo"DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
DB_URI = 'mysql+pymysql://root:tangsiqi123A@127.0.0.1:3306/test001?charset=utf8mb4'
"""
sqlalchemy2.0版本
"""engine = create_engine(DB_URI)class Base(DeclarativeBase):passclass User(Base):__tablename__ = "user"id = Column(Integer, primary_key=True, autoincrement=True)name = Column(String(50), nullable=False)age = Column(Integer, nullable=False)

3.进入虚拟环境
4.初始化alembic仓库

alembic init alembic-tst

#注:第一个alembic是alembic语法,
#类似git。第二个init代表初始化,
#第三个alembic代表仓库名,你也可以命名其它名字,
#一般采用了alembic这一名字
我们就可以看到我们的项目下多了一个alembic-tst文件和alembic.ini文件

在这里插入图片描述
5.修改alembic.ini配置文件

sqlalchemy.url = mysql+pymysql://root:tangsiqi123A@127.0.0.1:3306/alembic_demo?charset=utf8mb4

6.修改env.py文件的target_metadata参数
在这里插入图片描述
env.py 修改的部分

import os
import sys
import app# 把当前项目路径加入到path中
sys.path.append(os.path.dirname(os.path.dirname(__file__)))target_metadata = app.Base.metadata

7.迁移
创建数据库迁移文件

alembic revision --autogenerate -m “first commit”
在这里插入图片描述

#创建成功会在version目录下创建一个迁移文件
#前面xxx…ad这段代表迁移版本号,后面first_commit代表迁移信息

将迁移文件映射到数据库中

alembic upgrade head

在这里插入图片描述
7.1 这里是针对使用sqlalchemy1.4

pip install sqlalchemy==1.4.48

from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.ext.declarative import declarative_baseDIALCT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "123456"
HOST = "127.0.0.1"
PORT = "3306"
DATABASE = "alembic_demo"DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
"""
sqlalchemy1.4版本
"""
engine = create_engine(DB_URI)
Base = declarative_base(engine)class User(Base):__tablename__ = "user"id = Column(Integer , primary_key=True , autoincrement=True)name = Column(String(50) , nullable=False)
  1. 重复
    如果以后修改了代码,则重复 7 的步骤。

9.常用命令和参数

  • init:创建一个alembic仓库。
  • revision:创建一个新的版本文件。
  • –autogenerate:自动将当前模型的修改,生成迁移脚本(两个-)。
  • -m:本次迁移做了哪些修改,用户可以指定这个参数,方便回顾。
  • upgrade:将指定版本的迁移文件映射到数据库中,会执行版本文件中的upgrade函数。如果有多个迁移脚本没有被映射到数据库中,那么会执行多个迁移脚本。
  • [head]:代表最新的迁移脚本的版本号。
  • downgrade:会执行指定版本的迁移文件中的downgrade函数。
  • heads:展示head指向的脚本文件版本号。
  • history:列出所有的迁移版本及其信息。
  • current:展示当前数据库中的版本号。

另外,在你第一次执行upgrade的时候,就会在数据库中创建一个名叫alembic_version表,这个表只会有一条数据,记录当前数据库映射的是哪个版本的迁移文件。

- 更新数据库 	`alembic upgrade 版本号`
- 更新到最新版 	`alembic upgrade head`
- 降级数据库 	`alembic downgrade 版本号` 
- 更新到最初版 	`alembic downgrade head`
alembic upgrade 版本号 --sql > migration.sql####离线更新(生成sql) 

这篇关于alembic的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/752225

相关文章

Flask-SQLAlchemy 和 Alembic 的结合

Flask-SQLAlchemy 和 Alembic 的结合 安装必要的库配置 Flask-SQLAlchemy定义数据库模型初始化 Alembic配置 Alembic配置 env编写迁移脚本应用迁移后续迁移 Flask-SQLAlchemy 和 Alembic 是两个非常流行的 Python 库,它们通常一起使用来管理 Flask 应用中的数据库迁移。Flask-SQLAlch

Unity Alembic 在打包后报错:failed to load alembic at C://***.abc

ABC动画打Windows包后,加载时报错?找不到.abc文件。 你可能在用Unity做Windows 平台的项目时,遇到过使用Alembic动画的需求。 在资源管理方面,如果你的工作流是:所有ABC动画制作成预制,并且在项目打包时,将他们放在场景中,并提前将Active勾选掉,隐藏起来,在需要用的时候再显示出来,播放动画。那么你将不会遇到上述问题。 因此,如果你只是为了着急解决问题,对你而言

alembic初始化报错: No such template ‘generic‘,没有‘generic‘模板

alembic初始化报错: No such template ‘generic’,没有’generic’模板 遇到问题 alembic安装完毕后,准备生成初始化文件 alembic init alembic 结果报错了,提示没有generic模板 FAILED: No such template 'generic' 然后使用alembic list_templates准备查看下为什