提问人:C_Gavin 提问时间:11/15/2023 更新时间:11/16/2023 访问量:36
使用两个参数从 python 调用 SQL Server 中的存储过程
Calling a stored procedure in SQL Server from python with two parameters
问:
因此,我目前正在尝试将sql server中的存储过程连接到python程序。我连接到服务器很好,可以抓取表,但是当我尝试运行我的存储过程时,我收到“此结果不返回行”错误。下面是我用来调用存储过程的代码:
import pyodbc
import sqlalchemy as sal
engine = sal.create_engine('mssql+pyodbc://{}:{}@{}/{}?driver={}'.format(username,password,server,database,driver_2))
previous_days_start_value = 1
previous_days_end_value = 10
sql_query = sal.text("EXEC clk.get_codes_pdf :previous_days_start, :previous_days_end")
pdf_df = pd.read_sql_query(sql_query, engine, params={"previous_days_start":previous_days_start_value, "previous_days_end":previous_days_end_value})
这基本上是我所说的存储过程:
ALTER PROCEDURE [gen].[get_codes]
@previous_days_start bigint, @previous_days_end bigint
AS
BEGIN TRY
SET NOCOUNT ON;
select * from #Table;
END Try
当我在sql中执行它时,我确实得到了一个表。我可以像这样执行:
exec gen.get_codes 30,10
表格打印出来很完美。
任何帮助将不胜感激
我想从我的存储过程返回临时表。我已经使用以下方法测试了存储过程:
exec gen.get_codes 30,10
我确实得到了一张桌子作为回报。我也尝试添加
SET NOCOUNT ON;
但我仍然无法归还一张桌子。它似乎建立了连接,但随后没有表返回到我的数据帧中
答:
0赞
SmellyCat
11/16/2023
#1
Pandas read_sql_query用于将 SQL 结果集读入 Pandas DataFrame。
您收到的错误表明您的存储过程不打算返回结果集。直接使用 SqlAlchemy 引擎(代码示例中的变量)会更合适。engine
根据注释,您还应该检查您正在测试的存储过程是否与代码尝试运行的过程相同。
评论
clk.get_codes_pdf
gen.get_codes