pandas 有没有办法将 read_sql() 与 sql 语句一起使用,该语句需要多个变量?

2024-03-06

这是我的代码的一部分。我已经有一个包含值的数据库,并且需要根据该数据帧中的值创建一个新的数据帧(目前这些值只有 12 和 13,存储在header_row_ids多变的)。

当我运行脚本时,我收到以下错误消息:

pandas.io.sql.DatabaseError:执行失败 sql 'SELECT * FROM dbo.TestDetails WHERE Id IN (?,?), (13, 12)': ('07002', '[07002] [Microsoft][ODBC SQL服务器驱动程序]COUNT 字段不正确或语法错误')

有人可以帮我解决这个问题吗?我会很感激。

import pypyodbc
import pandas

sourceConnection = pypyodbc.connect(
            self.sourceDriver +
            self.sourceServer +
            self.sourceDatabase
            )

placeholders = ",".join("?" * (len(self.header_row_ids)))
sql_source_detail_select = "SELECT * FROM dbo.TestDetails WHERE Id IN (%s)" % placeholders

header_row_ids = [12, 13]
header_row_ids_string = str(self.header_row_ids).strip('[]')

new_sql_source_detail_select = sql_source_detail_select + ", (" + header_row_ids_string + ")"

dataframe = pandas.read_sql(new_sql_source_detail_select, sourceConnection)

read_sql https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql.html接受一个params可用于传递参数值的参数:

# header_row_ids = [12, 13]
# sql = "SELECT * FROM dbo.TestDetails WHERE Id IN (?,?)"

dataframe = pandas.read_sql(sql, sourceConnection, params=header_row_ids)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas 有没有办法将 read_sql() 与 sql 语句一起使用,该语句需要多个变量? 的相关文章

随机推荐