Files
Neo-ZQYY/scripts/ops/_run_status_migration.py

36 lines
932 B
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""执行 auth.users status CHECK 约束迁移"""
import os
import psycopg2
from dotenv import load_dotenv
load_dotenv()
dsn = os.environ["APP_DB_DSN"]
conn = psycopg2.connect(dsn)
conn.autocommit = True
cur = conn.cursor()
print(f"连接: {dsn.split('@')[1] if '@' in dsn else dsn}")
# 删除旧约束
cur.execute("ALTER TABLE auth.users DROP CONSTRAINT IF EXISTS users_status_check")
print("已删除旧约束 users_status_check")
# 添加新约束(含 'new'
cur.execute("""
ALTER TABLE auth.users ADD CONSTRAINT users_status_check
CHECK (status IN ('new', 'pending', 'approved', 'rejected', 'disabled'))
""")
print("已添加新约束(含 'new'")
# 验证
cur.execute("""
SELECT conname, pg_get_constraintdef(oid)
FROM pg_constraint
WHERE conrelid = 'auth.users'::regclass AND contype = 'c'
""")
for row in cur.fetchall():
print(f"验证: {row[0]}: {row[1]}")
conn.close()
print("完成")