首页 > 解决方案 > 直接在数据库上从 python 执行 SQL Server 存储过程

问题描述

我想使用 Python 在数据库上运行现有的 SQL Server 存储过程。为了澄清,我不想在 Python 中获得输出。我希望输出直接保存在数据库本身中。

我使用以下代码使用 pymssql 连接到数据库:

storedProc = "Exec TEST;"
cursor.execute( storedProc )

这是我的程序的代码:

CREATE PROCEDURE dbo.TEST
as
set nocount on

IF OBJECT_ID('tempdb..#A', 'U')IS not NULL DROP TABLE #A
CREATE TABLE #A
([id]           [INT] identity(1,1), 
 [CustomerName] [VARCHAR](30) NULL, 
 [OrderCount]   [INT] NULL
)
ON [PRIMARY]

Insert into #A ([CustomerName],[OrderCount]) values('Rajjjj',22),('Kusum',3),('Akshita',4),('John',5),('Dan',6)
IF OBJECT_ID('dbo.TEST_A', 'U')IS NULL
CREATE TABLE dbo.TEST_A
(
 [CustomerName] [VARCHAR](30) NULL, 
 [OrderCount]   [INT] NULL
);
truncate table  dbo.TEST_A
insert into dbo.TEST_A

此代码运行该过程,但输出返回给 Python,这不是我想要的。

标签: pythonsql-serverpymssql

解决方案


然后,发送到数据库的查询必须执行插入操作。考虑一个名为 [proc_output] 的表,其结构与过程的返回相同,代码将是:

storedProc = """
insert into proc_output
    Exec Procedure_Name;
"""
cursor.execute( storedProc )

推荐阅读