【发布时间】:2022-01-12 00:51:40
【问题描述】:
我在这里阅读了一篇关于错误处理的优秀文章。 Error handling in Python-MySQL
还有一千个类似的问题来自人们的问题,他们的查询没有返回任何内容 - 但那是因为它应该返回。
我有一个稍微不同的问题。
我有一个 SQL 查询,旨在转换创建一个新表。
SELECT *
INTO MyDataBase.MySchema.NewTable
FROM
(SELECT
ID,
Count(*) AS ProductCount
FROM
MyDataBase.MySchema.MyTable
GROUP BY
ID
) ProductCount
如果我在 SSMS 中运行查询,它会完美运行,SSMS 只会告诉我
(1901 rows affected)
Completion time: 2021-12-07T09:28:32.2541722+13:00
但是在我故意错误编辑代码并尝试从 pyhon 脚本运行查询后,我得到了一个模糊的结果,没有任何迹象表明该脚本没有; t 实际工作。
row = curs.fetchone()
pyodbc.ProgrammingError: No results. Previous SQL was not a query.
所以...我如何检查转换(SQL 查询)是否成功运行,即使它不应该从 python 返回任何结果...?
我知道它没有。
【问题讨论】:
-
您是否考虑过将其包装在
begin - end块中并返回成功状态 -
No.... 成功状态?
-
查询没有返回错误意味着语句运行成功...
-
“不抛出错误”并不总是意味着“工作”。小心你的假设以及你如何应用这个概念。
-
@Lamu 所以你是说反转解释?除非另有说明,否则假设它有效?嗯,这正是另一个转换类型查询发生的事情。当我尝试时,查询实际上在 SSMS 中失败了。但是python方法什么也没说。
标签: sql-server pyodbc python-cursor