TRUNCATE TABLE在Pyodbc中不起作用


import pyodbc
con=pyodbc.connect('Driver={SQL Server};Server=New;Database=Countrydatabase;Trusted_connection=yes')
cur=con.cursor()
cur.execute("TRUNCATE Countrydatabase..region")   
con.close()

我正在尝试使用pyodbc模块截断一个表。但它不断抛出错误。

Traceback(上次调用(:文件"C:\Users/sean/Desktop/script.py",第6行,位于cur.execute("TRUNCATE Countrydatabase..region"(pyodbc。编程错误:('42000',"[42000][Microsoft][ODBC SQL服务器驱动程序][SQL Server]"Countrydatabase"附近的语法不正确。(102((SQLExecDirectW("(

当我使用"SELECT"语句时,相同的代码可以正常工作。

Truncate不起作用的问题似乎是在我显式调用con.close():之后,自动提交设置不起作用

con = pyodbc.connect("conn", autocommit=True)

或者,您可以在关闭前显式执行提交:

con.commit()

参考编号:https://stackoverflow.com/a/31611279/845584

如错误消息所示,您的SQL不正确。

应该是:

TRUNCATE TABLE region

(您不需要指定数据库,因为您已经连接到Countrydatabase。(

PeterX上面的评论是我的解决方案。在实例化命令时,我将autocommit=True设置为True,并且我的表开始被截断。

您尝试过用dbo作为前缀吗。类似于:dbo.tablename

我今天在玩它,遇到了同样的问题,添加dbo部分起到了作用:-(

最新更新