You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从pandas通过SQLAlchemy导入MySQL的表中查询指定Date对应的行

报错原因

你之前查询报错是因为没有正确引用带特殊字符的字段名:导出的表中('Date', '')是完整的字段名字符串,直接写('Date', '')会被MySQL解析为包含两个元素的行构造器,而非字段名,所以抛出Operand should contain 1 column(s)错误。
而字段名异常的根源是你导出用的原始data是MultiIndex多级列索引的DataFrame,to_sql导出时没有处理多级索引,直接将列索引的元组格式序列化为了字段名。

正确查询语句

MySQL中字段名包含括号、引号、逗号等特殊字符时,需要用反引号`将完整字段名包裹才能正常识别,查询语句如下:

SELECT * FROM `data` WHERE DATE(`('Date', '')`) = '2021-03-01' LIMIT 1;

注:这里表名data也用反引号包裹,是因为data属于MySQL的预留关键字,避免解析冲突。

导出优化方案(可选)

如果想后续查询更方便,可在导出前将多级列索引拍平为单级标准列名,示例代码如下:

dataClose = data[['Date', 'Close']]
# 拍平多级列名,比如('Close','A')转为Close_A,('Date','')转为Date
dataClose.columns = [f"{col[0]}_{col[1]}".rstrip('_') for col in dataClose.columns]
# 导出时覆盖原有表
dataClose.to_sql('data', engine, index=False, if_exists='replace')

调整后导出的表字段名为Date、Close_A、Close_AAL等标准格式,后续查询可直接简化为:

SELECT * FROM data WHERE DATE(Date) = '2021-03-01' LIMIT 1;

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 10:30:03