From ce86f2ae4f916833a49dc12d4229399f245702ef Mon Sep 17 00:00:00 2001 From: Qihang Zhang Date: Sat, 19 Apr 2025 13:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(database):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=A1=A8=E5=AD=98=E5=9C=A8=E6=80=A7=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E6=93=8D=E4=BD=9C=E5=89=8D=E7=9A=84=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database_manager.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/database_manager.py b/database_manager.py index 1f36a06..aabe815 100644 --- a/database_manager.py +++ b/database_manager.py @@ -1,6 +1,8 @@ import os + import pandas as pd -from sqlalchemy import create_engine, text +from sqlalchemy import create_engine, text, inspect + from utils import load_config @@ -29,6 +31,21 @@ class DatabaseManager: """根据表键名获取实际表名""" 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): """ 从数据库中获取已有的交易日期 @@ -39,6 +56,11 @@ class DatabaseManager: 返回: 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) engine = self.get_engine() query = f"SELECT DISTINCT trade_date FROM {table_name}"