87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
数据库初始化脚本
|
|
用于创建数据库表结构
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# 添加项目根目录到系统路径
|
|
project_root = Path(__file__).parent.parent.absolute()
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
from sqlalchemy import create_engine, text
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
# 导入模型
|
|
from data.models.base import BaseModel
|
|
from data.models.vwedtask import (
|
|
VWEDTaskDef,
|
|
VWEDTaskRecord,
|
|
VWEDTaskLog,
|
|
VWEDBlockRecord,
|
|
VWEDTaskTemplate,
|
|
VWEDDataCache,
|
|
VWEDScript,
|
|
VWEDScriptVersion,
|
|
VWEDScriptLog,
|
|
InterfaceDefHistory
|
|
)
|
|
|
|
# 数据库连接信息
|
|
DB_USER = os.environ.get("DB_USER", "root")
|
|
DB_PASSWORD = os.environ.get("DB_PASSWORD", "password")
|
|
DB_HOST = os.environ.get("DB_HOST", "localhost")
|
|
DB_PORT = os.environ.get("DB_PORT", "3306")
|
|
DB_NAME = os.environ.get("DB_NAME", "vwed_task")
|
|
|
|
# 创建数据库连接URL
|
|
DATABASE_URL = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
|
|
|
|
# 创建数据库引擎
|
|
engine = create_engine(DATABASE_URL, echo=True)
|
|
|
|
# 创建session工厂
|
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|
|
|
|
|
def create_database():
|
|
"""创建数据库(如果不存在)"""
|
|
# 连接到MySQL服务器
|
|
root_engine = create_engine(f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/mysql")
|
|
|
|
with root_engine.connect() as conn:
|
|
# 创建数据库(如果不存在)
|
|
conn.execute(text(f"CREATE DATABASE IF NOT EXISTS {DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"))
|
|
print(f"数据库 {DB_NAME} 已创建或已存在")
|
|
|
|
|
|
def create_tables():
|
|
"""创建所有表"""
|
|
# 创建所有表
|
|
BaseModel.metadata.create_all(bind=engine)
|
|
print("所有表已创建")
|
|
|
|
|
|
def main():
|
|
"""主函数"""
|
|
try:
|
|
# 创建数据库(如果不存在)
|
|
create_database()
|
|
|
|
# 创建表
|
|
create_tables()
|
|
|
|
print("数据库初始化完成")
|
|
except Exception as e:
|
|
print(f"初始化数据库时出错: {e}")
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |