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”语句时,相同的代码可以正常工作。
答案 0 :(得分:4)
如错误消息所示,您的SQL不正确。
应该是:
TRUNCATE TABLE region
(由于您已经连接到Countrydatabase,因此无需指定数据库。)
答案 1 :(得分:1)
我的Truncate问题不起作用似乎是在我明确致电con.close()
后,“自动提交”设置不起作用:
con = pyodbc.connect("conn", autocommit=True)
或者您可以在关闭之前显式执行提交:
con.commit()
答案 2 :(得分:0)
PeterX的上述评论是我的解决方案。我在实例化命令时设置了autocommit = True,并且我的表开始被截断。
答案 3 :(得分:-1)
您是否尝试使用dbo为其前缀。类似于:dbo.tablename
我今天正在玩这个游戏,遇到了同样的问题,并且添加了dbo部分:-)