33 lines
1001 B
Python
33 lines
1001 B
Python
import asyncio
|
|
import time
|
|
from sqlalchemy import select
|
|
from database import init_db, get_session, AccountModel
|
|
|
|
|
|
async def migrate_add_id():
|
|
"""为现有记录添加ID字段"""
|
|
await init_db()
|
|
|
|
async with get_session() as session:
|
|
# 查询所有没有id的记录
|
|
result = await session.execute(
|
|
select(AccountModel).where(AccountModel.id == None)
|
|
)
|
|
accounts = result.scalars().all()
|
|
|
|
print(f"找到 {len(accounts)} 条需要更新的记录")
|
|
|
|
# 为每条记录添加id
|
|
for i, account in enumerate(accounts):
|
|
# 生成基于索引的间隔时间戳,避免所有记录使用同一时间戳
|
|
timestamp_ms = int(time.time() * 1000) - (len(accounts) - i) * 1000
|
|
account.id = timestamp_ms
|
|
print(f"更新记录 {account.email} 的ID为 {timestamp_ms}")
|
|
|
|
await session.commit()
|
|
print("迁移完成")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(migrate_add_id())
|