如何在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
相关产品推荐
相关产品推荐

