pandas 有没有办法将 read_sql() 与 sql 语句一起使用,它需要多个变量?
Is there a way with pandas to use read_sql() with an sql-statement, that takes multiple variables?
这是我的代码的一部分。我已经有一个包含值的数据库,并且需要根据该数据帧中的值创建一个新的数据帧(目前这些值只有 12 和 13,存储在 header_row_ids
变量中)。
当我 运行 脚本时,我收到以下错误消息:
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * FROM dbo.TestDetails WHERE Id IN (?,?), (13, 12)': ('07002', '[07002] [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error')
有人可以帮我解决这个问题吗?我将不胜感激。
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 接受可用于传递参数值的 params
参数:
# header_row_ids = [12, 13]
# sql = "SELECT * FROM dbo.TestDetails WHERE Id IN (?,?)"
dataframe = pandas.read_sql(sql, sourceConnection, params=header_row_ids)
这是我的代码的一部分。我已经有一个包含值的数据库,并且需要根据该数据帧中的值创建一个新的数据帧(目前这些值只有 12 和 13,存储在 header_row_ids
变量中)。
当我 运行 脚本时,我收到以下错误消息:
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * FROM dbo.TestDetails WHERE Id IN (?,?), (13, 12)': ('07002', '[07002] [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error')
有人可以帮我解决这个问题吗?我将不胜感激。
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 接受可用于传递参数值的 params
参数:
# header_row_ids = [12, 13]
# sql = "SELECT * FROM dbo.TestDetails WHERE Id IN (?,?)"
dataframe = pandas.read_sql(sql, sourceConnection, params=header_row_ids)