- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Alembic:让数据库迁移变得轻松愉快
数据库迁移一直是个让人头疼的问题。你说你不头疼?那是因为你还没遇到过大型项目的数据库迁移。
不过别慌,今天咱就来聊聊Alembic这个神器。它是SQLAlchemy作者开发的数据库迁移工具,简单好用,能让你的数据库迁移工作变得轻松又愉快。
Alembic是个啥玩意儿
Alembic就是一个数据库版本控制工具。它能记录你对数据库结构的每一次修改,
就像是给数据库拍了一堆快照。需要回滚?没问题,翻翻相册就行了。
它支持自动生成迁移脚本,还能手动编写复杂的迁移逻辑。简直就是数据库管理的瑞士军刀。
安装Alembic
安装Alembic超级简单,用pip一行命令搞定:
???
1pipinstallalembic
装好之后,在你的项目根目录下运行:
???
1alembicinitalembic
这条命令会创建一个alembic文件夹,里面有各种配置文件。主要是env.py和
alembic.ini,这两个文件待会儿要用到。
配置Alembic
配置Alembic主要就是修改alembic.ini文件。找到sqlalchemy.url这一行,
把它改成你的数据库连接字符串:
???
1#比如MySQL
2sqlalchemy.url=mysql+pymysql://username:password@localhost/dbname
3
4#或者PostgreSQL
5sqlalchemy.url=postgresql://username:password@localhost/dbname
温馨提示:别把数据库密码直接写在配置文件里,多不安全。可以用环境变量来存储敏感信息。
创建数据库模型
假设我们有个用户表,用SQLAlchemy定义是这样的:
???
1fromsqlalchemyimportColumn,Integer,String
2fromsqlalchemy.ext.declarativeimportdeclarative_base
3
4Base=declarative_base()
5
6classUser(Base):
7__tablename__=users
8
9id=Column(Integer,primary_key=True)
10name=Column(String(50),nullable=False)
11email=Column(String(120),unique=True,nullable=False)
生成迁移脚本
模型定义好了,就可以生成迁移脚本了。
运行这条命令:
???
1alembicrevision--autogenerate-m“Createuserstable”
Alembic会自动检测模型的变化,然后在alembic/versions目录下生成一个迁移脚本。
打开这个脚本,你会看到类似这样的内容:
???
1defupgrade():
2op.create_table(users,
3sa.Column(id,sa.Integer(),nullable=False),
4sa.Column(name,sa.String(length=50),nullable=False),
5sa.Column(email,sa.String(length=120),nullable=False),
6sa.PrimaryKeyConstraint(id),
7sa.UniqueConstraint(email)
8)
9
10defdowngrade():
11op.drop_table(users)
upgrade函数定义了如何创建表,downgrade函数定义了如何删除表。
这就是Alembic的强大之处,它能自动生成这些迁移代码,省去了手动编写的麻烦。
应用迁移
生成迁移脚本后,只需要一条命令就能应用到数据库:
???
1alembicupgradehead
这条命令会执行所有未应用的迁移脚本,将数据库更新到必威体育精装版状态。
如果你想回滚到之前的版本,可以用:
???
1alembicdowngrade-1
这会回滚最近的一次迁移。想回滚多次,就把-1改成你想回滚的次数。
手动编写迁移脚本
有时候自动生成的迁移脚本可能不太符合你的需求,这时候就需要手动编写了。
可以用这个命令创建一个空的迁移
您可能关注的文档
- 【技术分享】快速上手TkinterGUI编程,打造自己的计算器!.docx
- 【开发利器】vulture模块:发现Python代码中的“死”代码,让项目更清爽!.docx
- 【时间处理利器】PythonArrow模块,让你告别繁琐的datetime!.docx
- 【提升效率】学会使用aiofiles模块,让Python文件操作更高效!.docx
- 30个Python爬虫的实战项目(附源码).docx
- 124个Python案例,完整源代码!.docx
- Aardio,一个牛逼的python库!.docx
- acos,一个经典的python库!.docx
- akshare,一个超强的Python库!.docx
- Altair,一个声明式统计可视化的Python库!.docx
- 讲稿:深入理解“五个注重”把握进一步深化改革统筹部署以钉钉子精神抓好落实.pdf
- 副市长在2025年全市医疗工作会议上的讲话.docx
- 2025年市县处级以上党委(党组)理论学习中心组专题学习计划.docx
- 市民族宗教事务局党组书记、局长2024年度民主生活会个人对照检视发言材料.docx
- 烟草局党组书记2024年度抓基层党建工作述职报告.docx
- (汇编)学习2025年全国教育工作会议精神心得体会发言心得感悟.pdf
- 汇编学习领会在二十届中纪委四次全会上的重要讲话精神心得体会.pdf
- 在2025年镇安全生产、消防安全和生态环境保护第一次全体会议上的讲话提纲.docx
- 书记干部座谈会上的讲话+纪委全会上的讲话.pdf
- 党课:从毛泽东诗词中感悟共产党人初心使命.docx
最近下载
- 在创新中传承在传承中创新2025春季开学典礼校长发言四篇.docx VIP
- 高考英语阅读理解100篇.doc VIP
- 2025年二建机电实务押题班模拟试卷 .pdf VIP
- 《汽车制动排放测试方法(制动测功机法)第2部分:测试系统》标准征求意见稿.docx
- 自然拼读 phonics kids book3双字母组合发音.pdf
- 高考英语阅读理解100篇.pdf VIP
- 2025年公务员考试申论试题与参考答案.docx VIP
- 2025年江苏省初中学生化学素质与实验能力竞赛预赛试题(含答案).pdf VIP
- 中国漆包线行业市场发展现状及前景趋势与投资分析研究报告.docx
- 2024年安康职业技术学院单招职业倾向性测试题库(500题)含答案解析.docx VIP
文档评论(0)