Python全系列 教程
3567个小节阅读:5931.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
alembic是sqlalchemy的作者开发的,用来做ORM模型与数据库的迁移与映射,
alembic使用方式跟git有点了类似,
alembic的所有命令都是以alembic开头,
alembic的迁移文件也是通过版本进行控制的,
xxxxxxxxxx
pip install alembic
如创建一个models.py模块,然后在里面定义需要的模型类:
xxxxxxxxxx
from sqlalchemy import Column,String,Integer,create_engine
from sqlalchemy.ext.declarative import declarative_base
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'alembic_demo'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI ="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
engine = create_engine(DB_URI)
Base = declarative_base(engine)
class User(Base):
__tablename__ = 'user'
id = Column(Integer,primary_key=True,autoincrement=True)
uname = Column(String(50),nullable=False)
country = Column(String(50))
# ORM -> 迁移文件 -> 映射到数据库中
# import os
# print(os.path.dirname(__file__))
在alembic.ini
中,给sqlalchemy.url
项设置数据库的连接方式。方式跟sqlalchemy的方式是一样的。
xxxxxxxxxx
sqlalchemy.url = driver://user:pass@localhost/dbname
给sqlalchemy.url
项设置数据库的连接操作为:
xxxxxxxxxx
sqlalchemy.url = mysql+pymysql://root:root@localhost/alembic_demo?charset=utf8
为了使用模型类更新数据库,需要在alembic/env.py
文件中设置target_metadata项,默认为target_metadata=None。
需要将target_metadata
的值设置为模型Base.metadata
,但是要导入models
使用sys模块和os模块把当前项目的路径导入到path中:
导入models
的操作为:
xxxxxxxxxx
import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
import models
设置target_metadata项操作为
xxxxxxxxxx
target_metadata = models.Base.metadata
使用alembic revision --autogenerate -m "提示信息"将当前模型中的状态生成迁移文件。
使用alembic upgrade head将刚刚生成的迁移文件,真正映射到数据库中。
同理,如果要降级,那么使用alembic downgrade head。
实时学习反馈
1. 对于alembic说法错误的是?
A alembic可以映射数据库表结构
B alembic可以同步表数据
C alembics可以做表结构的迭代更新
D alembic映射表结构同样要设置数据库链接
答案
1=>B