init_db.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """
  2. 初始化数据库:创建所有表 + 插入默认管理员账号 + 默认爬虫源
  3. """
  4. import os
  5. import sys
  6. from dotenv import load_dotenv
  7. # 确保 .env 在 create_app 之前加载
  8. load_dotenv(os.path.join(os.path.dirname(__file__), '.env'))
  9. from app import create_app, db
  10. from app.models import User, SpiderSource
  11. def init_db():
  12. app = create_app()
  13. with app.app_context():
  14. # 创建所有表
  15. db.create_all()
  16. print("Tables created successfully.")
  17. # 插入默认管理员
  18. if not User.query.filter_by(username='admin').first():
  19. user = User(username='admin')
  20. user.set_password('admin')
  21. db.session.add(user)
  22. print("Default admin user created: admin / admin")
  23. else:
  24. print("Admin user already exists.")
  25. # 插入默认爬虫源
  26. if not SpiderSource.query.filter_by(code_identifier='baidusearch').first():
  27. source = SpiderSource(
  28. name='百度搜索',
  29. code_identifier='baidusearch',
  30. description='百度搜索引擎爬虫',
  31. type='script',
  32. status='active'
  33. )
  34. db.session.add(source)
  35. print("Default spider source '百度搜索' created.")
  36. else:
  37. print("Spider source '百度搜索' already exists.")
  38. db.session.commit()
  39. print("Database initialization complete.")
  40. if __name__ == '__main__':
  41. init_db()