网站大量收购闲置独家精品文档,联系QQ:2885784924

Alembic,一个数据库迁移工具!.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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改成你想回滚的次数。

手动编写迁移脚本

有时候自动生成的迁移脚本可能不太符合你的需求,这时候就需要手动编写了。

可以用这个命令创建一个空的迁移

您可能关注的文档

文档评论(0)

百科文库 + 关注
实名认证
内容提供者

通信资料

1亿VIP精品文档

相关文档