如何在Pandas中带参数执行SQL查询?解决read_sql_query报错问题
问题修复方案
你的报错原因是**read_sql_query的参数顺序传递错误**:该函数的第二个参数需要传入数据库连接对象,第三个参数才是查询参数列表,你把参数和连接对象的位置搞反了,导致程序把参数列表当成连接对象去调用cursor方法,自然会报"'list' object has no attribute 'cursor'"。
修正后的代码如下:
import pandas.io.sql as sqlio def getAnalysisMetaStatsDF(self): session = self.connection() ids = self.getAnalysisIds() # 整数列表 # 调整参数顺序:连接对象放第二个位置,参数作为第三个参数传入 data = sqlio.read_sql_query( "Select * from analysis_stats where analysis_id in %s", session, params=[tuple(ids)] ) print(data)
补充两点注意事项:
- 确保
self.connection()返回的是有效的psycopg2连接对象,和之前checkAnalysisStartDate方法中使用的一致 - 如果
ids列表为空,需要提前判断处理,避免生成()这样的空元组导致SQL语法错误
内容的提问来源于stack exchange,提问作者JD2775
相关产品推荐
相关产品推荐

