TRUNCATE TABLE在Pyodbc中不起作用

时间:2018-07-19 12:49:34

标签: python sql sql-server python-3.x 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模块截断表。但是它总是抛出错误。

  

回溯(最近通话最近):文件   “ C:/Users/sean/Desktop/script.py”,第6行   cur.execute(“ TRUNCATE Countrydatabase..region”)   pyodbc.ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC SQL   服务器驱动程序] [SQL Server]“国家/地区数据库”附近的语法不正确。   (102)(SQLExecDirectW)“)

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

4 个答案:

答案 0 :(得分:4)

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

应该是:

TRUNCATE TABLE region

(由于您已经连接到Countrydatabase,因此无需指定数据库。)

答案 1 :(得分:1)

我的Truncate问题不起作用似乎是在我明确致电con.close()后,“自动提交”设置不起作用:

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

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

con.commit()

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

您是否尝试使用dbo为其前缀。类似于:dbo.tablename

我今天正在玩这个游戏,遇到了同样的问题,并且添加了dbo部分:-)