50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
数据库安全迁移脚本
|
|
只创建缺失的表,不删除现有数据
|
|
用于生产环境部署
|
|
"""
|
|
|
|
import sys
|
|
from app import create_app
|
|
from models import db, Admin
|
|
|
|
def migrate_database():
|
|
"""安全迁移数据库(不删除数据)"""
|
|
app = create_app('production')
|
|
|
|
with app.app_context():
|
|
print("正在检查数据库表...")
|
|
|
|
# 只创建不存在的表(不会删除数据)
|
|
db.create_all()
|
|
print("✓ 数据库表检查完成")
|
|
|
|
# 检查是否存在管理员
|
|
admin_count = Admin.query.count()
|
|
|
|
if admin_count == 0:
|
|
print("\n未找到管理员账号,正在创建默认管理员...")
|
|
admin = Admin(
|
|
username='admin',
|
|
email='admin@example.com',
|
|
is_active=True
|
|
)
|
|
admin.set_password('admin123')
|
|
db.session.add(admin)
|
|
db.session.commit()
|
|
|
|
print("✓ 默认管理员创建成功")
|
|
print(" 用户名: admin")
|
|
print(" 密码: admin123")
|
|
print("\n⚠️ 请立即登录后台修改密码!")
|
|
else:
|
|
print(f"\n✓ 已存在 {admin_count} 个管理员账号")
|
|
|
|
print("\n" + "="*50)
|
|
print("数据库迁移完成!")
|
|
print("="*50)
|
|
|
|
if __name__ == '__main__':
|
|
migrate_database()
|