update exportdata
This commit is contained in:
86
main_gui.py
86
main_gui.py
@@ -102,6 +102,9 @@ class MainWindow(QMainWindow):
|
||||
# 创建功能按钮组
|
||||
self.create_button_group(main_layout)
|
||||
|
||||
# 创建数据导入按钮组
|
||||
self.create_import_button_group(main_layout)
|
||||
|
||||
# 创建进度条
|
||||
self.progress_bar = QProgressBar()
|
||||
# self.progress_bar.setVisible(False)
|
||||
@@ -307,6 +310,20 @@ class MainWindow(QMainWindow):
|
||||
|
||||
button_group.setLayout(button_layout)
|
||||
layout.addWidget(button_group)
|
||||
|
||||
def create_import_button_group(self, layout):
|
||||
"""创建数据导入按钮组"""
|
||||
import_group = QGroupBox("数据导入")
|
||||
import_layout = QHBoxLayout()
|
||||
|
||||
# 导入数据按钮
|
||||
self.btn_import = QPushButton('导入股票数据')
|
||||
self.btn_import.clicked.connect(self.on_import_clicked)
|
||||
self.btn_import.setToolTip('从CSV文件导入股票数据到数据库')
|
||||
import_layout.addWidget(self.btn_import)
|
||||
|
||||
import_group.setLayout(import_layout)
|
||||
layout.addWidget(import_group)
|
||||
|
||||
def create_log_area(self, layout):
|
||||
"""创建日志显示区域"""
|
||||
@@ -341,6 +358,8 @@ class MainWindow(QMainWindow):
|
||||
self.btn_export.setEnabled(enabled)
|
||||
self.btn_calculate.setEnabled(enabled)
|
||||
self.btn_check.setEnabled(enabled)
|
||||
self.btn_import.setEnabled(enabled)
|
||||
self.btn_float_share.setEnabled(enabled)
|
||||
|
||||
def on_update_clicked(self):
|
||||
"""更新数据按钮点击事件"""
|
||||
@@ -401,6 +420,17 @@ class MainWindow(QMainWindow):
|
||||
worker.finished_signal.connect(self.on_task_finished)
|
||||
worker.start()
|
||||
self.worker_threads.append(worker)
|
||||
|
||||
def on_import_clicked(self):
|
||||
"""导入数据按钮点击事件"""
|
||||
self.log_message("开始导入股票数据...")
|
||||
self.set_buttons_enabled(False)
|
||||
|
||||
worker = WorkerThread(self.import_stock_data)
|
||||
worker.log_signal.connect(self.log_message)
|
||||
worker.finished_signal.connect(self.on_task_finished)
|
||||
worker.start()
|
||||
self.worker_threads.append(worker)
|
||||
|
||||
def on_task_finished(self, success, message):
|
||||
"""任务完成回调"""
|
||||
@@ -486,8 +516,9 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# 移除人民币交易的股票:股票名称最后一个字符为R,误删除的从配置文件读回来
|
||||
reserved_codes = calculator.read_stock_codes_list(Path.cwd() / "config" / "Reservedcode.txt")
|
||||
remove_codes = calculator.read_stock_codes_list(Path.cwd() / "config" / "Removecode.txt")
|
||||
market_data_ll = calculator.get_stock_codes() # 使用按照价格和流通股数量筛选的那个表格
|
||||
market_data = market_data_ll + reserved_codes
|
||||
market_data = market_data_ll + reserved_codes - remove_codes
|
||||
|
||||
# 根据统计时间进行命名
|
||||
target_table_name = 'hk_monthly_avg_' + datetime.now().strftime("%Y%m%d")
|
||||
@@ -496,11 +527,10 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# 使用tqdm创建进度条
|
||||
for code in tqdm(market_data, desc="处理股票数据", unit="支"):
|
||||
tablename = 'hk_' + code[3:]
|
||||
# 计算并保存月度均值
|
||||
calculator.calculate_and_save_monthly_avg(
|
||||
source_table=tablename,
|
||||
target_table=target_table_name
|
||||
stock_code =code,
|
||||
target_table = target_table_name
|
||||
)
|
||||
|
||||
# self.log_message("月度平均计算完成")
|
||||
@@ -529,6 +559,54 @@ class MainWindow(QMainWindow):
|
||||
except Exception as e:
|
||||
self.log_message(f"数据检查失败: {str(e)}")
|
||||
raise
|
||||
|
||||
def import_stock_data(self):
|
||||
"""导入股票数据任务"""
|
||||
try:
|
||||
# 导入必要的模块
|
||||
from base.StockDataImporter import StockDataImporter
|
||||
from base.MySQLHelper import MySQLHelper
|
||||
from pathlib import Path
|
||||
|
||||
# 数据库配置
|
||||
db_config = {
|
||||
'host': 'localhost',
|
||||
'user': 'root',
|
||||
'password': 'bzskmysql',
|
||||
'database': 'hk_kline_1d'
|
||||
}
|
||||
|
||||
# 列映射配置
|
||||
COLUMN_MAPPING = {
|
||||
'证券代码': 'stock_code',
|
||||
'中文简称': 'stock_name_chn',
|
||||
'英文简称': 'stock_name_en',
|
||||
}
|
||||
|
||||
# 设置数据目录
|
||||
current_dir = Path(__file__).parent if "__file__" in locals() else Path.cwd()
|
||||
DATA_DIR = current_dir / "data"
|
||||
|
||||
# 确保data目录存在
|
||||
DATA_DIR.mkdir(exist_ok=True, parents=True)
|
||||
|
||||
# 创建导入器
|
||||
importer = StockDataImporter(db_config, COLUMN_MAPPING, DATA_DIR)
|
||||
|
||||
# 设置上传文件名(使用默认文件名 "港股通标的证券名单.csv")
|
||||
importer.setUploadfile("港股通标的证券名单.csv")
|
||||
|
||||
# 执行导入
|
||||
if importer.run_import():
|
||||
self.log_message("股票数据导入成功!")
|
||||
return True
|
||||
else:
|
||||
self.log_message("股票数据导入失败,请检查日志了解详情")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
self.log_message(f"导入股票数据失败: {str(e)}")
|
||||
raise
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""窗口关闭事件"""
|
||||
|
||||
Reference in New Issue
Block a user