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

Pandas读取SQL报错:如何正确查询特定ID的最后一行数据?

问题解决建议

错误原因

SQL中TEXT类型的字段值必须用引号包裹,你写的ID = AA34234234234234234234会被数据库识别为标识符(如列名、表名),而非字符串值,因此触发语法错误。

修正方案

1. 给字符串值添加引号

直接在SQL语句中给ID值加上单引号(或双引号):

# 单引号写法(外层用双引号包裹SQL语句)
status = pd.read_sql("SELECT * FROM table WHERE ID = 'AA34234234234234234234'", database).tail(1)

# 双引号写法(外层用单引号包裹SQL语句)
status = pd.read_sql('SELECT * FROM table WHERE ID = "AA34234234234234234234"', database).tail(1)

2. 更高效的SQL查询(推荐)

不要先查询所有符合条件的数据再用tail(1),直接在SQL层面排序后取最后一行,减少数据传输量:

# 假设Timestamp字段可作为排序依据,按降序取第一条
status = pd.read_sql("SELECT * FROM table WHERE ID = 'AA34234234234234234234' ORDER BY Timestamp DESC LIMIT 1", database)

3. 安全的参数化查询(适用于动态ID值)

如果ID是变量而非固定值,建议用参数化查询避免SQL注入:

target_id = 'AA34234234234234234234'
# sqlite用?作为占位符,其他数据库可能用%s等
status = pd.read_sql("SELECT * FROM table WHERE ID = ? ORDER BY Timestamp DESC LIMIT 1", database, params=(target_id,))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:03:37