mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +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
|
||
|
||
|
||
|
||
|
||
|