【发布时间】:2021-10-25 19:49:33
【问题描述】:
我想使用 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,这不是我想要的。
【问题讨论】:
-
你需要编写一个存储过程来保存结果而不是返回结果...
-
过程不返回结果。它只是更新现有表。但是如果你在 python 中执行这个过程,它将返回表而不是在数据库上更新它,除非你有 conn.commit() 行(我缺少)
-
@DaleK 完成。感谢您的提示。
-
请不要在问题中添加您的答案,您已经正确地添加了自己的答案。
-
我仍然觉得这很奇怪,因为您的 SP 中没有任何内容返回数据,我看不出无论有没有提交,您是如何获取任何数据的。但是你的问题已经解决了,我想这是主要的。
标签: python sql-server pymssql