【发布时间】:2020-09-29 16:43:50
【问题描述】:
我正在尝试从表中删除所有条目,但无法执行此操作。 不管是 TRUNCATE 还是 DELETE 关键字。出现同样的错误
import pyodbc
conn = pyodbc.connect(
r'Driver={SQL Server};'
r'Server=' + ip + '\SQLEXPRESS;'
r'Database=...;'
r'UID=...;'
r'PWD=...;', timeout=5)
cursor = conn.cursor()
data = cursor.execute("TRUNCATE TABLE table_name")
pyodbc.ProgrammingError:没有结果。以前的 SQL 不是查询。
将autocommit 设置为True 不起作用。参数化它也不起作用。连接是正确的,因为 SELECT 子句运行良好并返回正确的值。截断和删除它根本不起作用。 DDBB 仍然完好无损。
从 pycharm 的 Python 控制台执行时,每当我尝试访问数据对象时都会出现以下错误(例如 print(data.fetchval()):
Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 pyodbc.ProgrammingError:没有结果。以前的 SQL 不是查询。
我之前读过可能与 DDBB 表的索引方式及其私钥有关,但我无法解释它。
【问题讨论】:
-
你怎么知道查询是正确的?您是否尝试在 SQL Server Management Studio 中执行并且它有效?你拦截了数据库日志吗?它们显示了哪些错误?
-
@GordThompson 我做了同样的事情,当调用
data.fetchval()时,我得到:回溯(最近一次调用最后):文件“”,第 1 行,在pyodbc.ProgrammingError : 没结果。以前的 SQL 不是查询。这是来自命令行。 -
@sophros 是的,在 sql server manager 中的新查询上运行它时,它会输出“命令已成功完成”。并且日志显示没有来自 pyodbc 命令的尝试或信息。我在看here
标签: python sql-server pyodbc sql-delete sql-server-express