2016-09-15 45 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';」第一次成功,第二次返回錯誤。

要用子查詢運行刪除命令,我需要檢查子查詢是否真的有記錄。