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

如何在pandas的read_sql_query中传递相同SQL参数?

解决SQL参数传递错误及SQL语法问题

1. 先修正SQL语法错误

你的原始SQL存在语法逻辑错误:WHERE子句不能放在JOIN语句之前,且JOIN的ON条件位置错误、存在拼写错误(empoyee应为Employee)。修正后的SQL如下:

SELECT *
FROM user U
LEFT OUTER JOIN User U1 ON U.Id = U1.Id
LEFT OUTER JOIN Employee E ON E.id = U.Id
WHERE U.tokenid = ?
  AND E.Dept_Id IN (
      SELECT Dept_id
      FROM Department
      WHERE token_id = ?
  )

2. 修正参数传递代码

报错的核心原因是params参数的传递方式错误:你传入的字符串会被Python解析为字符序列(每个字符算一个参数),导致参数数量(36个字符)和SQL中的占位符数量(2个?)不匹配。

正确的做法是将参数放在列表或元组中,确保元素数量与占位符数量一致:

# 若两个token参数值相同
df = pd.read_sql_query(query, con, params=["your_token_value", "your_token_value"])

# 若两个token参数值不同
df = pd.read_sql_query(query, con, params=["token_1", "token_2"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:12:31