2013-09-24 61 views
0

我在與一個sqlite3的的搜索文件的問題,我有下面列的數據庫: 標題,藝術家,歌詞,跟蹤sqlite3的不顯示結果

我的代碼的是:

def search(title,artist,query): 
if title and artist and query: 
    db = sqlite3.connect('songs.db') 
    cursor = db.cursor() 
    cursor.execute('SELECT ? FROM song WHERE title=? and artist=?',(query,title,artist)) 
    result = cursor.fetchall() 

    if result: 
    print result 
    else: 
    return False 

我已經將text_factory設置爲str,但它解決了另一個問題,我用sqliteman等查看器檢查了數據庫,並試圖通過終端進行搜索,並且效果很好。 ¿誰能看到有什麼問題?

+2

,是正確的查詢? – dm03514

+1

我現在試過了,似乎它工作時,變量「查詢」被刪除,我把歌詞。作品的語句如下: cursor.execute('從歌曲中選擇歌詞WHERE標題=?和藝術家=?',(標題,藝術家)) – Ricardo

+0

奇怪,從來沒有考慮過不允許選擇列參數化 – dm03514

回答

0

SQL查詢中的參數總是被替換爲固定值。 換句話說,字符串總是被替換爲字符串,而不是列名。

要自定義列名在查詢中,您不能使用SQL參數,但這樣做在Python更換:如果你建立查詢作爲一個字符串,而無需使用paramerized查詢

cursor.execute('SELECT %s FROM song WHERE title = ? AND artist = ?' % (query), 
       (title, artist))