Fix migrate to new database error

This commit is contained in:
long2ice
2020-10-14 20:33:23 +08:00
parent 768747140a
commit 6339dc86a8
4 changed files with 18 additions and 11 deletions

View File

@@ -1 +1 @@
__version__ = "0.3.1"
__version__ = "0.3.2"

View File

@@ -4,7 +4,7 @@ import re
from datetime import datetime
from importlib import import_module
from io import StringIO
from typing import Dict, List, Tuple, Type
from typing import Dict, List, Optional, Tuple, Type
import click
from tortoise import (
@@ -15,6 +15,7 @@ from tortoise import (
Model,
Tortoise,
)
from tortoise.exceptions import OperationalError
from tortoise.fields import Field
from aerich.ddl import BaseDDL
@@ -53,8 +54,11 @@ class Migrate:
)
@classmethod
async def get_last_version(cls) -> Aerich:
return await Aerich.filter(app=cls.app).first()
async def get_last_version(cls) -> Optional[Aerich]:
try:
return await Aerich.filter(app=cls.app).first()
except OperationalError:
pass
@classmethod
def remove_old_model_file(cls, app: str, location: str):
@@ -67,17 +71,16 @@ class Migrate:
async def init_with_old_models(cls, config: dict, app: str, location: str):
await Tortoise.init(config=config)
last_version = await cls.get_last_version()
cls.app = app
cls.migrate_location = os.path.join(location, app)
if last_version:
content = last_version.content
with open(cls.get_old_model_file(app, location), "w") as f:
f.write(content)
migrate_config = cls._get_migrate_config(config, app, location)
cls.app = app
cls.migrate_config = migrate_config
cls.migrate_location = os.path.join(location, app)
await Tortoise.init(config=migrate_config)
migrate_config = cls._get_migrate_config(config, app, location)
cls.migrate_config = migrate_config
await Tortoise.init(config=migrate_config)
connection = get_app_connection(config, app)
cls.dialect = connection.schema_generator.DIALECT