在 pymssql 中使用 `query` 和 `callproc` 调用存储过程的区别
Posted
技术标签:
【中文标题】在 pymssql 中使用 `query` 和 `callproc` 调用存储过程的区别【英文标题】:Difference between calling stored procedure with `query` and `callproc` in pymssql 【发布时间】:2020-02-11 02:45:15 【问题描述】:我在 SQL Server 上保存了一个存储过程,并使用 pymssql 连接到该数据库。
我可以通过成功调用cursor.query('EXEC FindPerson')
来调用这个过程。
但是我不能使用方法cursor.callproc('FindPerson', (name,))
,我得到了这个错误
'NoneType' 和 'int' 的实例之间不支持'
我想知道为什么我不能调用callproc
方法。我想使用callproc
的原因是能够从过程中循环不同的结果集。
我也试过在这个方法上放不同的存储过程,不管我放什么参数,我总是得到同样的错误。所以似乎callproc
方法在执行程序之前就失败了。问题是调用存储过程的正确方法是什么?
下面是一个存储过程的例子。
CREATE PROCEDURE FindPerson
@name VARCHAR(100)
AS
BEGIN
SELECT *
FROM persons
WHERE name = @name
END
【问题讨论】:
【参考方案1】:您需要在元组中传递名称参数。 试试 cursor.callproc('FindPerson', (personname,))
【讨论】:
我在代码中添加了参数但忘记粘贴了。我遇到了同样的错误。以上是关于在 pymssql 中使用 `query` 和 `callproc` 调用存储过程的区别的主要内容,如果未能解决你的问题,请参考以下文章
使用 pymssql 使用 Python 导入 .bak MySQL 数据库