From 059275d1a29a92cb860cc4155cfc4a5477e8c8f7 Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Sat, 29 Nov 2025 18:28:32 +0800 Subject: [PATCH] update pay function --- __pycache__/app.cpython-310.pyc | Bin 375705 -> 380295 bytes app.py | 169 +++++++++++++++++++++----------- 2 files changed, 113 insertions(+), 56 deletions(-) diff --git a/__pycache__/app.cpython-310.pyc b/__pycache__/app.cpython-310.pyc index 88dd3f9ab8ae3831344ea98045eb1aa93d38b34b..4f57ded374001fcf956c28edb19db82dd59738c6 100644 GIT binary patch delta 109205 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 <~OlF}8J~9ydg-4?Wmg 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

O&KX}{fyc6CePliu-IpHl%c?DGf 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 N)K{(v1^I`S>wk-N-FE;0 diff --git a/app.py b/app.py index f1c91b38..954b5c66 100755 --- a/app.py +++ b/app.py @@ -5813,18 +5813,29 @@ def get_stock_quotes(): current_time = datetime.now() client = get_clickhouse_client() - # Get stock names from MySQL + # Get stock names from MySQL(批量查询优化) stock_names = {} with engine.connect() as conn: - for code in codes: - codez = code.split('.')[0] + # 提取不带后缀的股票代码 + base_codes = list(set([code.split('.')[0] for code in codes])) + if base_codes: + # 批量查询所有股票名称 + placeholders = ','.join([f':code{i}' for i in range(len(base_codes))]) + params = {f'code{i}': code for i, code in enumerate(base_codes)} result = conn.execute(text( - "SELECT SECNAME FROM ea_stocklist WHERE SECCODE = :code" - ), {"code": codez}).fetchone() - if result: - stock_names[code] = result[0] - else: - stock_names[code] = f"股票{codez}" + f"SELECT SECCODE, SECNAME FROM ea_stocklist WHERE SECCODE IN ({placeholders})" + ), params).fetchall() + + # 构建代码到名称的映射 + base_name_map = {row[0]: row[1] for row in result} + + # 为每个完整代码(带后缀)分配名称 + for code in codes: + base_code = code.split('.')[0] + if base_code in base_name_map: + stock_names[code] = base_name_map[base_code] + else: + stock_names[code] = f"股票{base_code}" def get_trading_day_and_times(event_datetime): event_date = event_datetime.date() @@ -5896,65 +5907,111 @@ def get_stock_quotes(): }) results = {} - print(f"处理股票代码: {codes}, 交易日: {trading_day}, 时间范围: {start_datetime} - {end_datetime}") + print(f"批量处理 {len(codes)} 只股票: {codes[:5]}{'...' if len(codes) > 5 else ''}, 交易日: {trading_day}, 时间范围: {start_datetime} - {end_datetime}") - for code in codes: - try: - print(f"正在查询股票 {code} 的价格数据...") - # Get the first price and last price for the trading period - data = client.execute(""" - WITH first_price AS (SELECT close - FROM stock_minute - WHERE code = %(code)s - AND timestamp >= %(start)s - AND timestamp <= %(end)s - ORDER BY timestamp - LIMIT 1 - ), - last_price AS ( - SELECT close - FROM stock_minute - WHERE code = %(code)s - AND timestamp >= %(start)s - AND timestamp <= %(end)s - ORDER BY timestamp DESC - LIMIT 1 - ) - SELECT last_price.close as last_price, - (last_price.close - first_price.close) / first_price.close * 100 as change - FROM last_price - CROSS JOIN first_price - WHERE EXISTS (SELECT 1 FROM first_price) - AND EXISTS (SELECT 1 FROM last_price) - """, { - 'code': code, - 'start': start_datetime, - 'end': end_datetime - }) + # ==================== 性能优化:批量查询所有股票数据 ==================== + # 使用 IN 子句一次查询所有股票,避免逐只循环查询 + try: + # 批量查询价格和涨跌幅数据(使用窗口函数) + batch_price_query = """ + WITH first_prices AS ( + SELECT + code, + close as first_price, + ROW_NUMBER() OVER (PARTITION BY code ORDER BY timestamp ASC) as rn + FROM stock_minute + WHERE code IN %(codes)s + AND timestamp >= %(start)s + AND timestamp <= %(end)s + ), + last_prices AS ( + SELECT + code, + close as last_price, + ROW_NUMBER() OVER (PARTITION BY code ORDER BY timestamp DESC) as rn + FROM stock_minute + WHERE code IN %(codes)s + AND timestamp >= %(start)s + AND timestamp <= %(end)s + ) + SELECT + fp.code, + lp.last_price, + (lp.last_price - fp.first_price) / fp.first_price * 100 as change_pct + FROM first_prices fp + INNER JOIN last_prices lp ON fp.code = lp.code + WHERE fp.rn = 1 AND lp.rn = 1 + """ - print(f"股票 {code} 查询结果: {data}") - if data and data[0] and data[0][0] is not None: - price = float(data[0][0]) if data[0][0] is not None else None - change = float(data[0][1]) if data[0][1] is not None else None + batch_data = client.execute(batch_price_query, { + 'codes': codes, + 'start': start_datetime, + 'end': end_datetime + }) + print(f"批量查询返回 {len(batch_data)} 条价格数据") + + # 解析批量查询结果 + price_data_map = {} + for row in batch_data: + code = row[0] + last_price = float(row[1]) if row[1] is not None else None + change_pct = float(row[2]) if row[2] is not None else None + price_data_map[code] = { + 'price': last_price, + 'change': change_pct + } + + # 组装结果(所有股票) + for code in codes: + price_info = price_data_map.get(code) + if price_info: results[code] = { - 'price': price, - 'change': change, + 'price': price_info['price'], + 'change': price_info['change'], 'name': stock_names.get(code, f'股票{code.split(".")[0]}') } else: + # 批量查询没有返回的股票 results[code] = { 'price': None, 'change': None, 'name': stock_names.get(code, f'股票{code.split(".")[0]}') } - except Exception as e: - print(f"Error processing stock {code}: {e}") - results[code] = { - 'price': None, - 'change': None, - 'name': stock_names.get(code, f'股票{code.split(".")[0]}') - } + + except Exception as e: + print(f"批量查询 ClickHouse 失败: {e},回退到逐只查询") + # 降级方案:逐只股票查询(保持向后兼容) + for code in codes: + try: + data = client.execute(""" + WITH first_price AS ( + SELECT close FROM stock_minute + WHERE code = %(code)s AND timestamp >= %(start)s AND timestamp <= %(end)s + ORDER BY timestamp LIMIT 1 + ), + last_price AS ( + SELECT close FROM stock_minute + WHERE code = %(code)s AND timestamp >= %(start)s AND timestamp <= %(end)s + ORDER BY timestamp DESC LIMIT 1 + ) + SELECT last_price.close as last_price, + (last_price.close - first_price.close) / first_price.close * 100 as change + FROM last_price CROSS JOIN first_price + WHERE EXISTS (SELECT 1 FROM first_price) AND EXISTS (SELECT 1 FROM last_price) + """, {'code': code, 'start': start_datetime, 'end': end_datetime}) + + if data and data[0] and data[0][0] is not None: + results[code] = { + 'price': float(data[0][0]) if data[0][0] is not None else None, + 'change': float(data[0][1]) if data[0][1] is not None else None, + 'name': stock_names.get(code, f'股票{code.split(".")[0]}') + } + else: + results[code] = {'price': None, 'change': None, 'name': stock_names.get(code, f'股票{code.split(".")[0]}')} + except Exception as inner_e: + print(f"Error processing stock {code}: {inner_e}") + results[code] = {'price': None, 'change': None, 'name': stock_names.get(code, f'股票{code.split(".")[0]}')} # 返回标准格式 return jsonify({'success': True, 'data': results})