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