Files
nanocode/new-media-platform/website-new/backend/init_db.py
T
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

156 lines
5.4 KiB
Python

#!/usr/bin/env python3
"""
Initialize database with default data
Usage: python init_db.py
"""
import sys
import os
# Add app to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from app.database import engine, SessionLocal, Base
from app.models import Admin, HomeModule, NavMenu, Setting
from app.auth import get_password_hash
import json
def init_database():
print("Creating database tables...")
Base.metadata.create_all(bind=engine)
db = SessionLocal()
try:
# Check if already initialized
if db.query(Admin).first():
print("Database already initialized!")
return
print("Creating default admin...")
admin = Admin(
username="admin",
password_hash=get_password_hash("abcd1234")
)
db.add(admin)
print("Creating default home modules...")
default_modules = [
HomeModule(
name="轮播图",
code="banner",
type="banner",
sort_order=1,
is_enabled=True,
is_fixed=True,
content=json.dumps({"slides": []}),
style_config=json.dumps({"backgroundColor": "#ffffff"})
),
HomeModule(
name="产品优势",
code="features",
type="features",
sort_order=2,
is_enabled=True,
is_fixed=False,
title="为什么选择我们",
content=json.dumps({"items": []}),
style_config=json.dumps({"backgroundColor": "#FEF9E7"})
),
HomeModule(
name="新闻动态",
code="news",
type="news",
sort_order=3,
is_enabled=True,
is_fixed=False,
title="新闻动态",
content=json.dumps({"count": 4}),
style_config=json.dumps({"backgroundColor": "#ffffff"})
),
HomeModule(
name="合作伙伴",
code="partners",
type="partners",
sort_order=4,
is_enabled=True,
is_fixed=False,
title="合作伙伴",
content=json.dumps({"logos": []}),
style_config=json.dumps({"backgroundColor": "#FEF9E7"})
),
HomeModule(
name="APP下载",
code="downloads",
type="downloads",
sort_order=5,
is_enabled=True,
is_fixed=False,
title="下载我们的APP",
content=json.dumps({"apps": []}),
style_config=json.dumps({"backgroundColor": "#ffffff"})
),
HomeModule(
name="联系我们",
code="contact",
type="contact",
sort_order=6,
is_enabled=True,
is_fixed=False,
title="联系我们",
content=json.dumps({"phone": "", "email": "", "address": ""}),
style_config=json.dumps({"backgroundColor": "#FEF9E7"})
),
HomeModule(
name="专家团队",
code="experts",
type="experts",
sort_order=7,
is_enabled=True,
is_fixed=False,
title="专家团队",
content=json.dumps({"view_more_link": ""}),
style_config=json.dumps({"backgroundColor": "#ffffff"})
)
]
for module in default_modules:
db.add(module)
print("Creating default nav menus...")
default_menus = [
NavMenu(name="首页", link="/", sort_order=1, is_enabled=True),
NavMenu(name="产品介绍", link="/product", sort_order=2, is_enabled=True),
NavMenu(name="新闻动态", link="/news", sort_order=3, is_enabled=True),
NavMenu(name="关于我们", link="/about", sort_order=4, is_enabled=True),
NavMenu(name="联系我们", link="/contact", sort_order=5, is_enabled=True),
]
for menu in default_menus:
db.add(menu)
print("Creating default settings...")
default_settings = [
Setting(key="site_name", value="飞点健康", group="general", description="网站名称"),
Setting(key="site_logo", value="/logo.png", group="general", description="网站Logo"),
Setting(key="company_name", value="深圳飞点健康科技有限公司", group="company", description="公司名称"),
Setting(key="copyright", value="© 2024 飞点健康 版权所有", group="general", description="版权信息"),
]
for setting in default_settings:
db.add(setting)
db.commit()
print("✅ Database initialized successfully!")
print("\nDefault admin credentials:")
print(" Username: admin")
print(" Password: abcd1234")
except Exception as e:
db.rollback()
print(f"❌ Error: {e}")
raise
finally:
db.close()
if __name__ == "__main__":
init_database()