脚本目录#
ScriptDirectory
对象提供对文件系统中存在的 Alembic 版本文件的编程访问。
- 类 alembic.script.Script(module: ModuleType, rev_id: str, path: str)#
表示
versions/
目录中的单个修订文件。Script
实例由方法返回,例如ScriptDirectory.iterate_revisions()
。- 模块: ModuleType#
表示实际脚本本身的 Python 模块。
- class alembic.script.ScriptDirectory(dir: str, file_template: str = '%(rev)s_%(slug)s', truncate_slug_length: int | None = 40, version_locations: List[str] | None = None, sourceless: bool = False, output_encoding: str = 'utf-8', timezone: str | None = None, hook_config: Mapping[str, str] | None = None, recursive_version_locations: bool = False, messaging_opts: MessagingOptions = {})#
提供对 Alembic 脚本目录的操作。
此对象可用于获取有关当前版本的的信息,最值得注意的是能够获取“头”版本,对于想要测试数据库中的当前版本是否是最新版本的方案来说。
from alembic.script import ScriptDirectory from alembic.config import Config config = Config() config.set_main_option("script_location", "myapp:migrations") script = ScriptDirectory.from_config(config) head_revision = script.get_current_head()
- classmethod from_config(config: Config) ScriptDirectory #
给定
Config
实例,生成新的ScriptDirectory
。Config
只需要有script_location
键。
- generate_revision(revid: str, message: str | None, head: _RevIdType | None = None, splice: bool | None = False, branch_labels: _RevIdType | None = None, version_path: str | None = None, depends_on: _RevIdType | None = None, **kw: Any) Script | None #
生成新的修订文件。
这将运行
script.py.mako
模板(给定模板参数),并创建一个新文件。
- get_base() str | None #
将“基本”修订作为字符串返回。
这是脚本的修订号,其
down_revision
为 None。如果脚本目录有多个基础,则会引发错误;应优先使用
ScriptDirectory.get_bases()
。
- get_current_head() str | None #
返回当前头修订版本。
如果脚本目录由于分支而有多个头,则会引发错误;应优先使用
ScriptDirectory.get_heads()
。- 返回:
字符串修订号。
另请参阅
- get_heads() List[str] #
以字符串形式返回所有“版本化头”修订。
这通常是一个长度为一的列表,除非存在分支。当脚本目录只有一个头时,通常可以使用
ScriptDirectory.get_current_head()
方法。- 返回:
一个字符串修订号元组。
- iterate_revisions(upper: str | Tuple[str, ...] | None, lower: str | Tuple[str, ...] | None, **kw: Any) Iterator[Script] #
从给定的上修订标识符开始,到下修订标识符结束,遍历脚本修订。
遍历严格使用每个迁移脚本中的 down_revision 标记,因此 upper >= lower 是一个要求,否则你将一无所获。
迭代器生成
Script
对象。
- run_env() None #
运行脚本环境。
这基本上运行迁移环境中存在的
env.py
脚本。它由alembic.command
中的命令函数独占调用。
修订版本#
RevisionMap
对象充当修订版本管理的基础,由 ScriptDirectory
独占使用。
- 异常 alembic.script.revision.RangeNotAncestorError(lower: str | Tuple[str, ...] | None, upper: str | Tuple[str, ...] | None)#
- class alembic.script.revision.Revision(revision: str, down_revision: str | Tuple[str, ...] | None, dependencies: str | Tuple[str, ...] | None = None, branch_labels: str | Tuple[str, ...] | None = None)#
修订对象的基本类。
Revision
类是面向公众的Script
对象的基础,它表示一个迁移脚本。修订管理和遍历的机制封装在Revision
中,而Script
将此逻辑应用于版本目录中的 Python 文件。- dependencies: str | List[str] | Tuple[str, ...] | None = None#
此修订所依赖的其他修订。
从迁移角度来看,这些依赖项被添加到 down_revision 中以形成完整迭代。但是,将 down_revision 与“依赖项”分开是为了帮助浏览包含许多分支(通常是多根场景)的历史记录。
- down_revision: str | List[str] | Tuple[str, ...] | None = None#
迁移脚本中的
down_revision
标识符。请注意,“向下”修订的总集合是 down_revision + 依赖项。
- property is_branch_point: bool#
如果此
Script
是分支点,则返回 True。分支点定义为一个
Script
,它被多个后续Script
引用,即多个Script
具有指向此处的 down_revision 标识符。
- exception alembic.script.revision.RevisionError#
- class alembic.script.revision.RevisionMap(generator: Callable[[], Iterable[Revision]])#
维护
Revision
对象的映射。RevisionMap
由ScriptDirectory
用来维护和遍历Script
对象集合,它们本身是Revision
的实例。构造一个新的
RevisionMap
。- add_revision(revision: Revision, _replace: bool = False) None #
将单个修订版添加到现有映射中。
此方法适用于单修订版用例,不适用于完全填充整个修订版映射。
- bases#
所有“基本”修订版(作为字符串)。
这些修订版具有
down_revision
为 None 或空元组。- 返回:
一个字符串修订号元组。
- get_current_head(branch_label: str | None = None) str | None #
返回当前头修订版本。
如果脚本目录由于分支而有多个头,则会引发错误;应优先使用
ScriptDirectory.get_heads()
。- 参数:
branch_label¶ – 可选分支名称,它将限制所考虑的头,仅考虑包含该 branch_label 的头。
- 返回:
字符串修订号。
另请参阅
- get_revision(id_: str | None) Revision | None #
返回具有给定修订 ID 的
Revision
实例。如果给出了符号名称(如“head”或“base”),则将标识符解析为当前头或基本修订。如果符号名称引用多个,则会引发
MultipleHeads
。支持部分标识符,其中给定的标识符与以给定字符开头的所有标识符匹配;如果完全匹配,则确定完整修订。
- get_revisions(id_: _GetRevArg | None) Tuple[_RevisionOrBase | None, ...] #
返回具有给定修订 ID 或标识符的
Revision
实例。可以给出一个标识符、一系列标识符或特殊符号“head”或“base”。结果是一个或多个标识符的元组,或在“base”的情况下为空元组。
在请求“head”、“heads”且修订映射为空的情况下,返回一个空元组。
支持部分标识符,其中给定的标识符与以给定字符开头的所有标识符匹配;如果完全匹配,则确定完整修订。
- heads#
所有“head”修订作为字符串。
这通常是一个长度为 1 的元组,除非存在未合并的分支。
- 返回:
一个字符串修订号元组。
- iterate_revisions(upper: str | Tuple[str, ...] | None, lower: str | Tuple[str, ...] | None, implicit_base: bool = False, inclusive: bool = False, assert_relative_length: bool = True, select_for_downgrade: bool = False) Iterator[Revision] #
从给定的上修订标识符开始,到下修订标识符结束,遍历脚本修订。
遍历严格使用每个迁移脚本中的 down_revision 标记,因此 upper >= lower 是一个要求,否则你将一无所获。
迭代器生成
Revision
对象。