2016-09-15 78 views
0

我能够与pypyodbc如下pypyodbc执行删除查询错误“函数序列错误”

cur.execute("delete from table_a where a ='a';").commit() 

然而在Python执行删除SQL查询,我无法以一个子查询运行删除SQL

cur.execute("delete from table_a where a in (select a from table_b);").commit() 

将返回

pypyodbc.Error: ('HY010', '[HY010] [unixODBC][Driver Manager]Function sequence error') 

我怎么能运行删除SQL与子查询?

+0

您是使用Vertica ODBC驱动程序还是不同的东西?我无法想象在您的删除语句中发生错误。只有在ODBC功能按顺序执行时才会发生该错误。你有自动提交吗?可能如果你这样做,那么你的提交可能会导致这个错误。 – woot

+0

@woot我试图设置autocommit的开关状态,在查询之后添加和删除commit(),它们都没有工作。 – Decula

+0

我从来没有见过这种行为。当你将提交移到后面时,错误发生在执行本身上?你所做的唯一不同,我可以看到的是在你的查询结尾处放一个分号。我以为你应该这样做,如果你有多个命令来运行。 – woot

回答

0

此问题的原因是pypyodbc不能与删除命令一起工作,实际上什么都不删除。

如果我运行“delete from table_a where a ='a';”第一次成功,第二次返回错误。

要用子查询运行删除命令,我需要检查子查询是否真的有记录。