CREATE PROCEDURE my_procedure
@Param INT
AS
SELECT Col1, Col2
FROM Table
WHERE Col2 = @Param
我希望能夠以此爲:
import pandas as pd
import pyodbc
query = 'EXEC my_procedure @Param = {0}'.format(my_param)
conn = pyodbc.connect(my_connection_string)
df = pd.read_sql(query, conn)
但是,這將引發一個錯誤:
ValueError: Reading a table with read_sql is not supported for a DBAPI2 connection. Use an SQLAlchemy engine or specify an sql query
SQLAlchemy也不起作用:
import sqlalchemy
engine = sqlalchemy.create_engine(my_connection_string)
df = pd.read_sql(query, engine)
拋出:
ValueError: Could not init table 'my_procedure'
我其實可以直接使用pyodbc
執行語句:
cursor = conn.cursor()
cursor.execute(query)
results = cursor.fetchall()
df = pd.DataFrame.from_records(results)
有沒有辦法來直接將這些程序結果的數據幀?
您使用的是什麼版本的熊貓?你可以嘗試使用'pd.read_sql_query'而不是'read_sql'嗎? ('read_sql'中存在一個關於執行存儲過程的錯誤) – joris 2014-10-01 08:06:06