feat(database): 添加表存在性检查功能,优化数据库操作前的验证流程

This commit is contained in:
Qihang Zhang 2025-04-19 13:31:40 +08:00
parent 38d1fb37ce
commit ce86f2ae4f

View File

@ -1,6 +1,8 @@
import os import os
import pandas as pd import pandas as pd
from sqlalchemy import create_engine, text from sqlalchemy import create_engine, text, inspect
from utils import load_config from utils import load_config
@ -29,6 +31,21 @@ class DatabaseManager:
"""根据表键名获取实际表名""" """根据表键名获取实际表名"""
return self.config['sqlite']['table_name'].get(key, key) return self.config['sqlite']['table_name'].get(key, key)
def table_exists(self, table_key):
"""
检查表是否存在
参数:
table_key (str): 数据表键名
返回:
bool: 表是否存在
"""
table_name = self.get_table_name(table_key)
engine = self.get_engine()
inspector = inspect(engine)
return inspector.has_table(table_name)
def get_existing_trade_dates(self, table_key): def get_existing_trade_dates(self, table_key):
""" """
从数据库中获取已有的交易日期 从数据库中获取已有的交易日期
@ -39,6 +56,11 @@ class DatabaseManager:
返回: 返回:
set: 已存在于数据库中的交易日期集合 set: 已存在于数据库中的交易日期集合
""" """
# 先检查表是否存在
if not self.table_exists(table_key):
print(f"'{self.get_table_name(table_key)}' 不存在,返回空集合")
return set()
table_name = self.get_table_name(table_key) table_name = self.get_table_name(table_key)
engine = self.get_engine() engine = self.get_engine()
query = f"SELECT DISTINCT trade_date FROM {table_name}" query = f"SELECT DISTINCT trade_date FROM {table_name}"