鉴于:
- 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)
但这会引发错误:
sqlAlchemy也不起作用:
抛出:
- ValueError: Could not init table 'my_procedure'
事实上,我可以直接使用pyodbc执行语句:
- cursor = conn.cursor()
- cursor.execute(query)
- results = cursor.fetchall()
- df = pd.DataFrame.from_records(results)
有没有办法将这些过程结果直接发送到DataFrame?
解决方法
https://code.google.com/p/pyodbc/wiki/StoredProcedures
我不是python专家,但sql Server有时会返回语句执行的计数.例如,更新将告知更新了多少行.
只需使用’SET NO COUNT;’在批量调用的前面.这将删除插入,更新和删除的计数.
确保使用正确的本机客户端模块.
看看这个堆栈溢出示例.
Calling a stored procedure python
祝好运