feat: complete huihui square avatar workflows
This commit is contained in:
73
scripts/repair_segment_nicknames.py
Normal file
73
scripts/repair_segment_nicknames.py
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Repair nickname fields for the imported phone segment.
|
||||
|
||||
This fixes users whose nickname was overwritten back to the phone number by
|
||||
setting nickname = real_name for the target account range.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import pymysql
|
||||
|
||||
|
||||
DB_HOST = os.getenv("DB_HOST", "127.0.0.1")
|
||||
DB_PORT = int(os.getenv("DB_PORT", "3306"))
|
||||
DB_USER = os.getenv("DB_USER", "aivirtual")
|
||||
DB_PASSWORD = os.getenv("DB_PASSWORD", "AiVirtual2024")
|
||||
DB_NAME = os.getenv("DB_NAME", "ai_virtual_news")
|
||||
|
||||
ACCOUNT_START = os.getenv("ACCOUNT_START", "13721560041")
|
||||
ACCOUNT_END = os.getenv("ACCOUNT_END", "13721560199")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
conn = pymysql.connect(
|
||||
host=DB_HOST,
|
||||
port=DB_PORT,
|
||||
user=DB_USER,
|
||||
password=DB_PASSWORD,
|
||||
database=DB_NAME,
|
||||
charset="utf8mb4",
|
||||
autocommit=False,
|
||||
)
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT id, account, nickname, real_name
|
||||
FROM virtual_users
|
||||
WHERE account BETWEEN %s AND %s
|
||||
ORDER BY account
|
||||
""",
|
||||
(ACCOUNT_START, ACCOUNT_END),
|
||||
)
|
||||
rows = cur.fetchall()
|
||||
if not rows:
|
||||
print("No matching users found.")
|
||||
return 1
|
||||
|
||||
cur.execute(
|
||||
"""
|
||||
UPDATE virtual_users
|
||||
SET nickname = real_name
|
||||
WHERE account BETWEEN %s AND %s
|
||||
AND real_name IS NOT NULL
|
||||
AND real_name <> ''
|
||||
AND nickname <> real_name
|
||||
""",
|
||||
(ACCOUNT_START, ACCOUNT_END),
|
||||
)
|
||||
updated = cur.rowcount
|
||||
conn.commit()
|
||||
|
||||
print(f"Checked {len(rows)} users, repaired {updated} nicknames.")
|
||||
return 0
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user