55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
@File : migrate_common.py
|
|
@Date : 2023-06-16
|
|
"""
|
|
from __future__ import print_function, unicode_literals, absolute_import, division
|
|
import traceback
|
|
|
|
from peewee import MySQLDatabase, SqliteDatabase, PostgresqlDatabase
|
|
from playhouse.cockroachdb import CockroachDatabase
|
|
from playhouse.migrate import (
|
|
MySQLMigrator, SqliteMigrator,
|
|
SchemaMigrator, CockroachDBMigrator,
|
|
PostgresqlMigrator,
|
|
migrate
|
|
)
|
|
|
|
from domain_admin.log import logger
|
|
|
|
|
|
def get_migrator(db):
|
|
"""
|
|
不同的数据库,迁移方法不一样
|
|
:param db:
|
|
:return:
|
|
"""
|
|
|
|
# mysql
|
|
if isinstance(db, MySQLDatabase):
|
|
return MySQLMigrator(db)
|
|
# sqlite
|
|
elif isinstance(db, SqliteDatabase):
|
|
return SqliteMigrator(db)
|
|
# Cockroach
|
|
elif isinstance(db, CockroachDatabase):
|
|
return CockroachDBMigrator(db)
|
|
# Postgresql
|
|
elif isinstance(db, PostgresqlDatabase):
|
|
return PostgresqlMigrator(db)
|
|
else:
|
|
return SchemaMigrator(db)
|
|
|
|
|
|
def try_execute_migrate(migrate_rows):
|
|
"""
|
|
执行迁移命令,旧版本可能因为字段缺失而报错
|
|
:param migrate_rows: list
|
|
:return:
|
|
"""
|
|
for migrate_row in migrate_rows:
|
|
try:
|
|
migrate(migrate_row)
|
|
except Exception as e:
|
|
logger.error(traceback.format_exc())
|