gpt4 book ai didi

python - 在 sqlalchemy 中执行存储过程

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:35 25 4
gpt4 key购买 nike

我正在 sqlalchemy 中使用 raw_connection 来执行一些运行存储过程的 SQL。

存储过程在最后选择一个参数ID。我怎样才能获取这个ID?

Python代码是:

import sqlalchemy as sa

SQLCommand = """
DECLARE @Msg varbinary(max) = CAST(%s AS varbinary(max) )
EXECUTE dbo.usp_procedure @Type = 32, @header = %s, @store = @Msg
""" % (Datacontent, var)


Engine = sa.create_engine(connection_string)
Connection = Engine.raw_connection()
cursor = Connection.cursor()
cursor.execute(SQLCommand)
return_key = list(cursor.fetchall())
Connection.commit()
Connection.close()

我认为 return_key 将包含来自 usp_procedure 的返回代码,但它出错了,我得到:

No results.  Previous SQL was not a query.

该过程的最后一步是:

SELECT @ParamID

我希望能够在我的 python 代码中读回这段代码

最佳答案

我没有 sql-server,并且仅针对 oracle 进行了测试,但是对于评论来说这太长了。

创建了这个简单的存储过程,

CREATE OR REPLACE PROCEDURE PROCEDURE1(inp IN VARCHAR2, outp OUT VARCHAR2) AS 
BEGIN
IF (inp = 'true') THEN
outp := '1';
RETURN;
END IF;
IF (inp = 'false') THEN
outp := '0';
RETURN;
END IF;
outp := NULL;
RETURN;
END PROCEDURE1;

并使用以下代码对其进行了测试:

Connection = c.manager.engine.raw_connection()
cursor = Connection.cursor()
result = cursor.callproc("PROCEDURE1", ['true', ''])
print(result[1])
result = cursor.callproc("PROCEDURE1", ['false', ''])
print(result[1])

结果如预期的那样为 1 和 0。

我一直在浏览,我希望 callproc 可用于 sql-server 例如here但老实说,我不是 sqlalchemy 将使用的。尝试一下,希望有帮助。

关于python - 在 sqlalchemy 中执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com