提问人:Shaye 提问时间:11/9/2023 最后编辑:Gord ThompsonShaye 更新时间:11/10/2023 访问量:49
如何使用 SQL 炼金术从 Python 中调用 Microsoft SQL Server 存储过程
How to call Microsoft SQL Server Stored Procedure from within Python using SQL Alchemy
问:
我想使用 Python 和 SQL Alchemy 执行驻留在 Microsoft SQL Server 上的存储过程。
到目前为止,我能够连接到 Microsoft SQL Server,运行简单的选择查询,将其分配给 Panda 数据帧并使用以下代码将其保存到 csv 文件:
from sqlalchemy import create_engine
import pandas as pd
Server='Jaar'
Database='M'
Driver='ODBC Driver 17 for SQL Server'
Database_Con = f'mssql://@{Server}/{Database}?driver={Driver}'
engine=create_engine(Database_Con)
con = engine.connect()
df=pd.read_sql_query("SELECT * FROM [M].[Dim].[Accounts_t]",con)
但是,我尝试对采用两个参数的 SP 执行相同的操作,但没有成功
此外,我无法让这个例子起作用:https://sql-query.dev/articles/1767
并且在 SQL Alchemy 文档中没有找到太多可以帮助我的东西。
谢谢
我要执行的 SP 如下:
USE [M]
GO
DECLARE @return_value int
EXEC @return_value = [Reporting].[Finance_Payments_Mvmts_sp]
@PeriodStart = 202212,
@PeriodEnd = 202310
SELECT 'Return Value' = @return_value
GO
答:
0赞
Shaye
11/10/2023
#1
我无法使用 SQL Alchemy 和 SQL Server,所以我终于找到了另一个用于访问 SQL Server 的 Python 模块,称为 pymssql:
import pymssql
import pandas as pd
conn = pymssql.connect(server = 'Jaar', database = 'M')
cursor = conn.cursor(as_dict=True)
PeriodStart = 202212
PeriodEnd = 202310
cursor.callproc('[Reporting].[Finance_Payments_Mvmts_sp]', (PeriodStart, PeriodEnd))
(202212, 202310)
rows = []
for row in cursor:
rows.append(row)
df = pd.DataFrame(rows)
print(df)
df.to_csv("TestOutput.csv")
我需要它做什么,即使用输入参数运行SQL Server存储过程
评论
read_sql_query
@return_value
engine.raw_connection()