python 如何为本地Tortoise项目创建数据库迁移?

7vhp5slm  于 2023-04-19  发布在  Python
关注(0)|答案(1)|浏览(241)

bounty将在3天后过期。回答此问题可获得+50声望奖励。mascai正在寻找来自信誉良好的来源的答案

我有一个FastAPI + tortose项目,我想运行与数据库postgres://lom:lom@localhost:5432/lom(数据库创建本地项目)
我的准则

# lom/app.py
class App:
    storage: S3Storage

    def __init__(self):
        self.config = Config(_env_file=".env", _env_file_encoding="utf-8")
        self.__setup_sentry()
        ...
    def create_app(self, loop: asyncio.AbstractEventLoop) -> FastAPI:
        app = FastAPI()
        register_tortoise(
            app,
            modules={
                "models": [
                    "lom.core",
                    "aerich.models",
                ]
            }

我想应用当前迁移并创建正在尝试的新迁移

aerich init -t <Don't understand path>

我应该运行什么aerich命令,应该使用哪些参数?

├── lom
│   ├── app.py
│   ├── config.py
│   ├── core
│   │   ├── city.py
│   │   ├── company.py
├── 
├── migrations
│   ├── 001_main.sql
│   ├── 002_cities.sql
│   ├── 003_cities_declination.sql
fykwrbwg

fykwrbwg1#

1.在项目的根目录下创建一个tortoise_conf.py文件(如果没有的话),并添加以下配置,将凭证和数据库名替换为您自己的:

# tortoise_conf.py
TORTOISE_ORM = {
    "connections": {
        "default": "postgres://lom:lom@localhost:5432/lom"
    },
    "apps": {
        "models": {
            "models": ["lom.core", "aerich.models"],
            "default_connection": "default",
        }
    },
}

1.更新你的App类以包含tortoise_conf.py中的Tortoise-ORM配置:

# lom/app.py
from tortoise_conf import TORTOISE_ORM

class App:
    # ...

    def create_app(self, loop: asyncio.AbstractEventLoop) -> FastAPI:
        app = FastAPI()
        register_tortoise(
            app,
            config=TORTOISE_ORM,
            generate_schemas=False,
        )

1.在终端中运行以下命令初始化Aerich:

aerich init -t tortoise_conf.TORTOISE_ORM

此命令将在项目的根目录中创建一个aerich.ini文件。
1.通过运行以下命令应用当前迁移:

aerich upgrade

此命令将应用migrations文件夹中所有可用的迁移。
1.要创建新迁移,您可以运行:

aerich migrate --name <migration_name>

此命令将在migrations文件夹中生成新的迁移文件。
1.要应用新迁移,请运行:

aerich upgrade

相关问题