2011-05-25 60 views
1

我執行此代碼在pythonSql語句與像變

from sqlite3 import dbapi2 as sqlite 

con = sqlite.connect("db.sqlite") 
cur = con.cursor() 
surname = "'%atton%'" 
cur.execute("select id from singers where surname like :surname", locals()) 
cur.close() 
con.close() 

這段代碼cur.rowcount == -1之後,但巴頓是在數據庫中。

我的SQL語句不好嗎?

謝謝

回答

5

您使用DB-API參數(你應該使用,不會更改)指姓會自動被引用或轉義。您應該從surname字符串中刪除內部引號集。

surname = "%atton%" 
cur.execute("select id from singers where surname like :surname", 
    dict(surname=surname)) 
+0

問題依然存在。沒有改變。 – xralf 2011-05-25 14:22:30

+0

然後你就必須展開這個問題。你在使用什麼DB-API模塊?它使用什麼參數?你真的在閱讀查詢的結果嗎? DB-API模塊是否甚至妨礙正確設置rowcount? – 2011-05-25 15:26:09

+0

「它使用什麼參數?」這是什麼意思? 「你是......查詢?」是的,我正在讀結果'如果cur.rowcount> 0:',但是這個代碼沒有執行。 「......是否正確?」是的,我在另一部分代碼中使用它,它工作。主要問題是'surname:surname'。 'surname =:surname'起作用。 – xralf 2011-05-25 15:39:12