mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-28 03:27:31 +08:00
81 lines
1.8 KiB
Python
81 lines
1.8 KiB
Python
"""2.2.1
|
|
|
|
Revision ID: a946dae52526
|
|
Revises: 5b3355c964bb
|
|
Create Date: 2025-08-20 17:50:00.000000
|
|
|
|
"""
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
from app.log import logger
|
|
from app.core.config import settings
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = 'a946dae52526'
|
|
down_revision = '5b3355c964bb'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
"""
|
|
升级:将SiteUserData表的userid字段从Integer改为String
|
|
"""
|
|
connection = op.get_bind()
|
|
|
|
if settings.DB_TYPE.lower() == "postgresql":
|
|
# PostgreSQL数据库迁移
|
|
migrate_postgresql_userid(connection)
|
|
|
|
|
|
def downgrade() -> None:
|
|
"""
|
|
降级:将SiteUserData表的userid字段从String改回Integer
|
|
"""
|
|
pass
|
|
|
|
|
|
def migrate_postgresql_userid(connection):
|
|
"""
|
|
PostgreSQL数据库userid字段迁移
|
|
"""
|
|
try:
|
|
logger.info("开始PostgreSQL数据库userid字段迁移...")
|
|
|
|
# 1. 创建临时列
|
|
connection.execute(sa.text("""
|
|
ALTER TABLE siteuserdata
|
|
ADD COLUMN userid_new VARCHAR
|
|
"""))
|
|
|
|
# 2. 将现有数据转换为字符串并复制到新列
|
|
connection.execute(sa.text("""
|
|
UPDATE siteuserdata
|
|
SET userid_new = CAST(userid AS VARCHAR)
|
|
WHERE userid IS NOT NULL
|
|
"""))
|
|
|
|
# 3. 删除旧列
|
|
connection.execute(sa.text("""
|
|
ALTER TABLE siteuserdata
|
|
DROP COLUMN userid
|
|
"""))
|
|
|
|
# 4. 重命名新列
|
|
connection.execute(sa.text("""
|
|
ALTER TABLE siteuserdata
|
|
RENAME COLUMN userid_new TO userid
|
|
"""))
|
|
|
|
logger.info("PostgreSQL数据库userid字段迁移完成")
|
|
|
|
except Exception as e:
|
|
logger.error(f"PostgreSQL数据库userid字段迁移失败: {e}")
|
|
raise
|
|
|
|
|
|
|
|
|
|
|