跳转到主要内容

为asyncpg提供的简单迁移系统

项目描述

asyncpg-trek: 为asyncpg提供的简单迁移

一个用于管理迁移的简单库。

目标受众

我自己。但如果您使用[asyncpg]并且更喜欢以原始SQL(即您不使用SQLAlchemy/Alembic)编写迁移,那么您也会。

特性

  • 异步:迁移通常不需要异步,但您可以从使用与应用程序相同的数据库驱动程序中受益(仅支持[asyncpg])。
  • 简单:您只需在选择的文件夹中创建.sql或Python文件,并将此工具指向该文件夹。无需与新的API斗争来编写迁移。
  • 以API为中心:没有CLI需要了解,您自己决定如何调用迁移,您自己控制数据库连接的创建。这使得在测试中运行迁移、将其包装在CLI中或通过公开的HTTP端点运行迁移变得非常简单。
  • 声明式:只需指定您想要的版本,库就会确定是否需要升级、降级或无需操作。

示例用法

from pathlib import Path

import asyncpg
from asyncpg_trek import plan, execute, Direction
from asyncpg_trek.asyncpg import AsyncpgBackend

MIGRATIONS_DIR = Path(__file__).parent / "migrations"

async def migrate(
    conn: asyncpg.Connection,
    target_revision: str,
) -> None:
    backend = AsyncpgBackend(conn)
    async with backend.connect() as conn:
        planned = await plan(conn, backend, MIGRATIONS_DIR, target_revision=target_revision, direction=Direction.up)
        await execute(conn, backend, planned)

您可以将此作为一个Docker镜像的入口点,API中的管理端点或测试中的辅助函数(或以上所有)。如何运行迁移取决于您系统的复杂度。例如,对于简单的系统,可能很容易根据硬编码的修订版本在应用启动时运行迁移。对于更复杂的系统,您可能希望手动运行迁移或通过管理API运行。

在GitHub上查看此版本:v0.4.0

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

asyncpg_trek-0.4.0.tar.gz (7.8 kB 查看哈希值)

上传时间 源代码

构建分布

asyncpg_trek-0.4.0-py3-none-any.whl (9.5 kB 查看哈希值)

上传时间 Python 3

由支持