66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
"""
|
|
手动创建数据库表结构脚本
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from src.storage.database import db_manager
|
|
from sqlalchemy import text
|
|
import logging
|
|
|
|
# 配置日志
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def create_database_tables():
|
|
"""创建数据库表结构"""
|
|
try:
|
|
# 获取数据库会话
|
|
session = db_manager.get_session()
|
|
|
|
logger.info("数据库连接成功")
|
|
|
|
# 检查数据库是否存在
|
|
result = session.execute(text('SHOW DATABASES LIKE \'stock_analysis\''))
|
|
db_exists = result.fetchone()
|
|
|
|
if not db_exists:
|
|
logger.info("创建数据库 stock_analysis")
|
|
session.execute(text('CREATE DATABASE stock_analysis'))
|
|
|
|
# 使用数据库
|
|
session.execute(text('USE stock_analysis'))
|
|
|
|
# 检查表是否存在
|
|
result = session.execute(text('SHOW TABLES'))
|
|
existing_tables = [row[0] for row in result.fetchall()]
|
|
|
|
logger.info(f"现有表: {existing_tables}")
|
|
|
|
# 如果表不存在,创建表结构
|
|
if not existing_tables:
|
|
logger.info("开始创建表结构...")
|
|
|
|
# 创建表结构
|
|
db_manager.create_tables()
|
|
|
|
logger.info("表结构创建完成")
|
|
|
|
# 验证表是否创建成功
|
|
result = session.execute(text('SHOW TABLES'))
|
|
new_tables = [row[0] for row in result.fetchall()]
|
|
logger.info(f"新创建的表: {new_tables}")
|
|
else:
|
|
logger.info("表结构已存在")
|
|
|
|
session.close()
|
|
logger.info("数据库表结构检查完成")
|
|
|
|
except Exception as e:
|
|
logger.error(f"创建表结构失败: {str(e)}")
|
|
raise
|
|
|
|
if __name__ == "__main__":
|
|
create_database_tables() |