命令#
注意
本节讨论了Alembic 的内部 API,涉及它的命令调用系统。本节仅对希望扩展 Alembic 功能的开发人员有用。有关使用 Alembic 命令的文档,请参阅 教程。
Alembic 命令在 Commands 包中均由函数表示。它们都接受相同的用法样式,将 Config
对象作为第一个参数发送。
命令可以通过编程方式运行,首先构造一个 Config
对象,如下所示
from alembic.config import Config
from alembic import command
alembic_cfg = Config("/path/to/yourapp/alembic.ini")
command.upgrade(alembic_cfg, "head")
在很多情况下,而且可能在大多数情况下,应用程序希望调用一系列 Alembic 命令和/或其他功能。如果可行,通常建议将多个命令链接到单个连接和事务。这可以通过使用 Config.attributes
字典来实现,以便共享连接
with engine.begin() as connection:
alembic_cfg.attributes['connection'] = connection
command.upgrade(alembic_cfg, "head")
此食谱要求 env.py
使用此连接参数;有关详细信息,请参阅 在一条或多条编程迁移命令中共享连接 中的示例。
要编写直接使用数据库和脚本目录信息的小型 API 函数,而不是仅仅运行其中一个内置命令,请直接使用 ScriptDirectory
和 MigrationContext
类。
- alembic.command.downgrade(config: Config, revision: str, sql: bool = False, tag: str | None = None) None #
还原到以前版本。
- alembic.command.heads(config: Config, verbose: bool = False, resolve_dependencies: bool = False) None #
显示脚本目录中当前可用的头。
- alembic.command.history(config: Config, rev_range: str | None = None, verbose: bool = False, indicate_current: bool = False) None #
按时间顺序列出变更集脚本。
- alembic.command.init(config: Config, directory: str, template: str = 'generic', package: bool = False) None #
初始化一个新的脚本目录。
- alembic.command.merge(config: Config, revisions: _RevIdType, message: str | None = None, branch_label: _RevIdType | None = None, rev_id: str | None = None) Script | None #
合并两个修订。创建新的迁移文件。
- 参数:
另请参见
- alembic.command.revision(config: Config, message: str | None = None, autogenerate: bool = False, sql: bool = False, head: str = 'head', splice: bool = False, branch_label: _RevIdType | None = None, version_path: str | None = None, rev_id: str | None = None, depends_on: str | None = None, process_revision_directives: ProcessRevisionDirectiveFn | None = None) Script | None | List[Script | None] #
创建新的修订文件。
- 参数:
message¶ – 应用于修订的字符串消息;这是
-m
选项,用于alembic revision
。autogenerate¶ – 是否从数据库自动生成脚本;这是
--autogenerate
选项,用于alembic revision
。sql¶ – 是否将脚本转储为 SQL 字符串;指定后,脚本将转储到 stdout。这是
--sql
选项,用于alembic revision
。head¶ – 作为父项构建新修订的头修订;这是
--head
选项,用于alembic revision
。splice¶ – 新修订是否应成为其自身的新头;当给定的
head
本身不是头时,这是必需的。这是--splice
选项,用于alembic revision
。branch_label¶ – 应用于分支的字符串标签;这是
--branch-label
选项,用于alembic revision
。version_path¶ – 标识配置中特定版本路径的字符串符号;这是
--version-path
选项,用于alembic revision
。rev_id¶ – 可选的修订标识符,用于代替生成一个标识符;这是
--rev-id
选项,用于alembic revision
。depends_on¶ – 可选的“依赖于”标识符列表;这是
--depends-on
选项,用于alembic revision
。process_revision_directives¶ – 这是一个可调用的函数,它采用与
EnvironmentContext.configure.process_revision_directives
中描述的可调用的函数相同形式;将应用于由修订过程生成的结构,在其中可以通过编程方式对其进行更改。请注意,与所有其他参数不同,此选项仅可通过以编程方式使用command.revision()
获得。
- alembic.command.stamp(config: Config, revision: _RevIdType, sql: bool = False, tag: str | None = None, purge: bool = False) None #
使用给定的版本“标记”版本表;不运行任何迁移。