如何将 python 变量输入存储过程?

How can I input a python variable into a stored procedure?

我需要使用我的 python 脚本中的特定值查询 SQL 数据库,这是我目前所拥有的:

conn = pyodbc.connect('<SQL-CREDENTIALS-HERE>')

# Create a cursor from the connection

crsr = conn.cursor()
sql = """\
DECLARE @DATA1 AS var_num;
DECLARE @DATA2 OUTPUT;

EXEC EXT_GetDATA
        @DATA1,
        @DATA2;

"""
crsr.execute(sql)   

为此,我收到一条错误消息,提示 DATA1 是无效数据类型,我写的 sqL 查询对吗?请注意,var_num 是在脚本的较早部分提取的,此处未显示。

编辑:我也试过以下方法,但还是不行:

conn = pyodbc.connect('')

# Create a cursor from the connection

crsr = conn.cursor()
sql = """\
DECLARE @DATA1 CHAR(20);
SET DATA1 = var_num;

DECLARE @DATA2 NVARCHAR;

EXEC EXT_GetDATA
        @DATA1,
        @DATA2 OUTPUT;

"""
crsr.execute(sql)

但是这仍然不起作用,returns 错误:

Exception has occurred: ProgrammingError
(Invalid column name 'var_num'. (207) (SQLExecDirectW)")

谁能告诉我我做错了什么,我不想将 var_num 设置为列名??

pyodbc Wiki 中所示,这样的事情应该有效:

crsr = conn.cursor()
sql = """\
DECLARE @out NVARCHAR(max);
EXEC EXT_GetDATA
        @DATA1 = ?,
        @DATA2 = @out OUTPUT;
SELECT @out AS output_value;
"""
crsr.execute(sql, var_num)  # pass `var_num` as input parameter value
the_output = crsr.fetchval()  # retrieve output parameter value