import os from app import create_app from extensions import db from models import User, Device, UserDevicePermission # 创建应用实例 app = create_app() def init_db(): with app.app_context(): # ========================================== # ⚠️ 警告:这会清空现有的数据库表结构并重建 # 如果只想更新 User 表,可以注释掉 db.drop_all(), # 但因为增加了字段,直接重建是最稳妥的。 # ========================================== print("正在清理旧数据库...") db.drop_all() print("正在创建新表结构...") db.create_all() print("✅ 数据库表结构创建完成 (devices.db 和 users.db)") # ========================================== # 🟢 1. 创建超级管理员 (Root) # 即使代码里有后门,数据库里有一个对应的实体也是最好的 # ========================================== admin = User(username='admin', role='admin') admin.set_password('licahk') # 设置密码 db.session.add(admin) print(f"👤 用户创建: [admin] (角色: 超级管理员)") # ========================================== # 🟡 2. 创建一个测试工程师 (可选) # ========================================== engineer = User(username='engineer01', role='engineer') engineer.set_password('123456') db.session.add(engineer) print(f"👤 用户创建: [engineer01] (角色: 工程师)") # ========================================== # ⚪ 3. 创建一个测试普通客户 (可选) # ========================================== client = User(username='client01', role='client') client.set_password('123456') db.session.add(client) print(f"👤 用户创建: [client01] (角色: 客户)") # 提交更改 db.session.commit() print("\n🚀 初始化完成!请运行 run.py 启动服务器。") if __name__ == '__main__': # 再次确认防止误删 print("此操作会删除现有的 'users.db' 和 'devices.db' 中的数据并重建。") confirm = input("确认继续吗? (y/n): ") if confirm.lower() == 'y': init_db() else: print("操作已取消。")