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("截断国家数据库..区域") pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL 服务器驱动程序][SQL Server]“国家数据库”附近的语法不正确。 (102) (SQLExecDirectW)")
当我使用“SELECT”语句时,相同的代码工作正常。
我的截断不起作用问题似乎是在我明确调用
con.close()
后,自动提交设置不起作用:
con = pyodbc.connect("conn", autocommit=True)
或者您可以在关闭之前显式执行提交:
con.commit()
如错误消息所示,您的 SQL 不正确。
应该是:
TRUNCATE TABLE region
(您不需要指定数据库,因为您已经连接到国家/地区数据库。)
PeterX 的上述评论是我的解决方案。我在实例化命令时设置了 autocommit=True,并且我的表开始被截断。
执行 truncate 语句后必须提交
import pyodbc
con=pyodbc.connect('Driver={SQL Server};Server=New;Database=Countrydatabase;Trusted_connection=yes')
cur=con.cursor()
cur.execute("TRUNCATE Countrydatabase..region")
con.commit()
con.close()
这样就可以了。
您是否尝试过在其前面加上 dbo.类似于: dbo.tablename
我今天在玩它,遇到了同样的问题,添加 dbo 部分有效:-)