问句:20250306涨停板,连续涨停天数,涨停时间,涨停原因 Traceback (most...
作成日: 2025年3月7日
作成日: 2025年3月7日
问句:20250306涨停板,连续涨停天数,涨停时间,涨停原因
Traceback (most recent call last):
File "<string>", line 62, in <module>
File "<string>", line 20, in main
File "I:\0userR\JMP\JMP\Python\Python311\site-packages\pywencai\wencai.py", line 185, in get
data = params.get('data')
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get'
有此错误。请修改、给出完整修改后的代码、给出代码后不要补充后面的说明了、这样能加你回答的速度。
import pandas as pd
import sys
from sqlalchemy import create_engine, DateTime, String,text
import pywencai
import akshare as ak
import pandas as pd
from datetime import timedelta
from datetime import datetime as dt
import logging
def main(query_day):
question = f'''{query_day}涨停板,连续涨停天数,涨停时间,涨停原因'''
textprint(f"问句:{question}") df = pywencai.get(query=question,loop=True,sleep=0.5) # 去掉列名中的日期后缀 df.columns = df.columns.str.replace(r'$$.*$$', '', regex=True) # 重命名列以匹配ClickHouse表结构 column_mapping = { '股票代码': 'stock_code', '股票简称': 'stock_name', '最新价': 'latest_price', '最新涨跌幅': 'latest_change_percent', '涨停': 'limit_up', '连续涨停天数': 'consecutive_limit_up_days', '首次涨停时间': 'first_limit_up_time', '涨停原因类别': 'limit_up_reason_category', '涨停明细数据': 'limit_up_details', '最终涨停时间': 'final_limit_up_time', '涨停封单量': 'limit_up_order_volume', '涨停封单额': 'limit_up_order_amount', '涨停开板次数': 'limit_up_breakout_count', '涨停封单量占成交量比': 'limit_up_volume_ratio', '涨停封单量占流通a股比': 'limit_up_float_ratio', 'a股市值(不含限售股)': 'a_share_market_value', '几天几板': 'days_and_boards', '涨停类型': 'limit_up_type', '市场编号': 'market_code', '代码': 'code' } df = df.rename(columns=column_mapping) # 处理 stock_code,只保留前 6 位 df['stock_code'] = df['stock_code'].str[:6] print(df)
if name == 'main':
main('20250306')
pythonimport pandas as pd import sys from sqlalchemy import create_engine, DateTime, String, text import pywencai import akshare as ak import pandas as pd from datetime import timedelta from datetime import datetime as dt import logging def main(query_day): question = f'''{query_day}涨停板,连续涨停天数,涨停时间,涨停原因''' print(f"问句:{question}") try: df = pywencai.get(query=question, loop=True, sleep=0.5) except AttributeError as e: print(f"AttributeError: {e},返回空表。") df = pd.DataFrame() # 如果依旧为 None 或非 DataFrame,则构造空表 if df is None or not isinstance(df, pd.DataFrame): print("pywencai 未返回有效数据,返回空表。") df = pd.DataFrame() if df.empty: print("数据为空,结束。") return # 去掉列名中的日期后缀 df.columns = df.columns.str.replace(r'$$.*$$', '', regex=True) # 重命名列以匹配ClickHouse表结构 column_mapping = { '股票代码': 'stock_code', '股票简称': 'stock_name', '最新价': 'latest_price', '最新涨跌幅': 'latest_change_percent', '涨停': 'limit_up', '连续涨停天数': 'consecutive_limit_up_days', '首次涨停时间': 'first_limit_up_time', '涨停原因类别': 'limit_up_reason_category', '涨停明细数据': 'limit_up_details', '最终涨停时间': 'final_limit_up_time', '涨停封单量': 'limit_up_order_volume', '涨停封单额': 'limit_up_order_amount', '涨停开板次数': 'limit_up_breakout_count', '涨停封单量占成交量比': 'limit_up_volume_ratio', '涨停封单量占流通a股比': 'limit_up_float_ratio', 'a股市值(不含限售股)': 'a_share_market_value', '几天几板': 'days_and_boards', '涨停类型': 'limit_up_type', '市场编号': 'market_code', '代码': 'code' } df = df.rename(columns=column_mapping) # 处理 stock_code,只保留前 6 位 if 'stock_code' in df.columns: df['stock_code'] = df['stock_code'].astype(str).str[:6] print(df) if __name__ == '__main__': main('20250306')