2011-10-01 64 views
3

以下查詢導致蟒崩潰(「python.exe遇到問題...」 過程與-1073741819SQL查詢導致蟒崩潰

查詢退出代碼終止是:

create temp table if not exists MM_lookup2 as 
select lower(Album) || lower(SongTitle) as concat, ID  
from MM.songs  
where artist like '%;%' collate nocase 

如果我從「像」,以它=運行按預期發生變化,如

create temp table if not exists MM_lookup2 as 
select lower(Album) || lower(SongTitle) as concat, ID  
from MM.songs  
where artist = '%;%' collate nocase 

我正在蟒蛇V2.7.2,在有任何的SQLite附帶的版本。

問題查詢在python之外運行時沒有問題。

+0

更新:我有另一個看看是否有什麼是「奇怪的」關於這種情況。我能想到的唯一的事情是數據庫被編碼爲UTF-16le,被查詢的數據庫是一個附加的數據庫,而不是第一個連接的數據庫。 ...我改變了程序,以消除第二個問題(即直接連接MM數據庫)......這沒有解決問題。 – BarryM

+0

更新2:問題似乎孤立於一個數據庫,由MediaMonkey創建的。他們已經實現了一個內部版本的「like」函數[MediaMonkey](http://www.mediamonkey.com/wiki/index.php/MediaMonkey_Database_structure)...「這種LIKE的MM專用實現,自動使用@ - 作爲轉義字符並始終應用,這意味着您需要修改SearchString以正確使用此功能。「 ......不知道這是什麼原因導致我的問題,但似乎我想。我找不到如何通過sqlite獲得@轉義字符。 .. 有什麼想法嗎? – BarryM

+0

你可以分享你的python代碼,這個查詢已經實現了嗎? – codersofthedark

回答

0

您沒有編寫您正在使用的數據庫系統/驅動程序。我懷疑你的SQL是問題。 %字符需要被轉義。數據庫驅動程序模塊可能嘗試將%和%)解釋爲格式字符,並且它不能將不存在的參數值轉換爲數據庫後端可接受的格式。

你能給我們一些具體的Python代碼嗎?你可以請嘗試運行相同的查詢,但將'%,%'的值放入參數中,並將其作爲參數傳遞給遊標?