2014-02-25 23 views
1

我正在編寫腳本來查詢本週內包含特定網址的文章。我無法插入的網址,試圖使用LIKE過濾器來檢查某個網址。我嘗試插入,因爲我做了公開的開始和結束周,但它似乎與雙重插值混淆。你如何執行mysql包含與python中的網址?

澄清,該腳本在查詢

start_week = today - datetime.timedelta(today.weekday()) 
end_week = start_week + datetime.timedelta(7) 

cursor = db.cursor(MySQLdb.cursors.DictCursor) 
cursor.execute("""SELECT * FROM table WHERE url LIKE '%{http://foo.com/bar}%'""", [start_week, end_week]) 
result = cursor.fetchall() 
print len(result) 

回答

1

pythong不喜歡括號,它會與嵌套插值混淆。我建議在字符串中添加%並在查詢內插入它。

bar = '%http://foo.com/bar%' 
    cursor = db.cursor(MySQLdb.cursors.DictCursor) 
    cursor.execute("""SELECT * FROM table WHERE url LIKE %s""", [bar]) 
    result = cursor.fetchall() 

享受!

+1

感謝兄弟工作! – Dap

0

%{http://foo.com/bar}%部分得到一個錯誤有兩個WHERE查詢語句中的運營商。

更改第二WHERE到在這行:

cursor.execute("""SELECT * FROM table WHERE published>=%s AND published<=%s WHERE url LIKE '%{$http://foo.com/bar}%'""", [start_week, end_week]) 

應該是這樣的:

cursor.execute("""SELECT * FROM table WHERE published>=%s AND published<=%s AND url LIKE '%{$http://foo.com/bar}%'""", [start_week, end_week]) 
+0

我已經切換它,但它仍然不喜歡我正在做的插值 – Dap

+0

你的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'%{foo.com/bar}%'附近使用正確的語法「),是我得到的錯誤 – Dap

+0

檢查我更新的答案。嘗試編碼的url? – chishaku

1

我有什麼需要做的就是在字符串中增加的百分比,然後在sql插值查詢