0

我有一些Connection类,它有__enter____exit__方法来返回mysql.connector.MySQLConnection实例。

需要的是运行 mysql 存储过程并将数据作为数据框获取。我尝试了很多方法:?、%s、:1、%(name)s 并将列表、元组、字典传递给参数。

with Connection(**self._connection) as conn:
   df = pandas.read_sql("call stored_procedure (?);", conn, params=['test'])

我阅读了带有参数的 Pandas read_sqlMySQL 存储过程、Pandas 和“在执行多个语句时使用 multi=True”以及其他一些内容,但仍然找不到解决方案,因为它总是以“并非所有参数都在 SQL 语句中使用”而失败"或要求使用 Multi = True;

当然,我们可以使用游标读取数据,获取它并传递给 DataFrame 构造函数,但是根据文档必须有一种使用 pandas.read_sql 的方法。

4

2 回答 2

0

odbc / SQL Server 是可能的。也许您可以调整对 mysql 的调用。基本上,只需附加您的参数:

# imports for SQL data part
import pyodbc
import pandas as pd

# Get connected

strconnODBC = ("Driver={SQL Server Native Client 11.0};"
            "Server=SERVERNAME;"
            "Database=DATABASENAME;"
            "Trusted_Connection=Yes")       # You may need to enter Login-info

cnn = pyodbc.connect(strconnODBC)


# Call a SQL Server Stored Procedure with Parameters
strMyPara='ShowMeResults'
strSQL="[dbo].[q_Your_SP] "
strSQL= strSQL + " @WhatYouWant='" + strMyPara + "'"

data = pd.read_sql(strSQL , cnn)  
print('Max of ' + strMyPara + ': ' + str(data['Result'].max()))
于 2021-07-15T13:11:22.300 回答
0

总结:不能用参数调用SP 证明:Pandas Docs

于 2020-04-30T06:55:52.237 回答