2016-06-07 79 views
1

我目前正在學習Python,並且我已經陷入了一個奇怪的問題。Python/MySQL Select返回None與%s

我從一個網站使用beautifulsoup,我已經可以保存到MySQL數據庫。現在我想讓腳本首先檢查抓取的URL是否已經在數據庫中。

查詢看起來是這樣的:

check_url = "SELECT url FROM shop_ig " \ 
    "WHERE url = '%s'" 

在這裏我得到的網址:

soup = BeautifulSoup(plain_text, "html.parser") 

for link in soup.findAll('a', {'class': 'ig-preorders-item'}): 
    href = link.get('href') 
    print(href) 

現在,我有網址,我想檢查是否href是已經在數據庫中所以我執行查詢使用:

## Check if url is in db 
    cursor.execute(check_url, href) 
    data = cursor.fetchone() 
    sqlconnect.commit() 

現在奇怪的事情,數據返回None,但是,如果我輸入一個永久性的url到查詢中,它會在數據庫中找到url。

+0

可您打印cursor._executed? – eyalsh

+0

是的,返回b「SELECT URL FROM shop_instantgaming WHERE url ='%s'」 有趣 – Nolibert

+0

'cursor.execute(check_url,(href,))'而不是'cursor.execute(check_url,href)''。 – alecxe

回答

0

感謝alexce我發現了這個問題。

我現在使用:

cursor.execute(check_url, (href,)) 

的選擇現在看起來是這樣的( '' 刪除)

check_url = "SELECT url FROM shop_instantgaming " \ 
"WHERE url = %s"