2012-12-03 46 views
-3

其目的是檢查電子郵件是否已經存在於利用python和MySQLdb的數據庫中。我正在使用可變郵件來存儲電子郵件。 MySQL表單是電子郵件。我有以下代碼:Python中的MySQL

if cursor.execute("select count(*) from registrants where email = " + "'"email2"'") == 0: 
    print "it doesn't exist!" 

這個聲明有什麼問題,或者我該如何去做這件事?

+1

什麼是錯誤的是,你不餵養你的SQL查詢到MySQL。你只是比較它的字符串值和'0',它總是返回'False'。 –

+0

是larsmans,我注意到我發佈後不久。我更新了命令,也忽略了SQL的「@」和「。」。 –

回答

3

我幾乎不知道從哪裏開始。

只要在Python程序中輸入一串SQL就不會以某種方式查詢數據庫。實際上,您必須打開數據庫連接,實例化遊標,使用該遊標運行SQL並獲取結果。所有這些在MySQLdb文檔中都有解釋。

一旦你這樣做了,你仍然需要將你的表單中的電子郵件參數真正傳遞給SQL語句,而你也不會這樣做。

+0

是的,爲了不發佈整個論壇的垃圾郵件,我將代碼限制爲兩行,與50 –

+0

相反。如果不顯示真正的代碼,我們無法幫助您確定代碼中存在什麼問題。 –

+0

我確實展示了唯一重要的代碼。其餘部分是正確的,因爲我所有的其他SQL語句的工作。如果你無法回答所給出的問題,那麼繼續前進。 –

0

那麼將無法正常工作,因爲這只是mysql查詢字符串。你必須執行這個查詢使用mysql客戶端接收結果和測試。使用pymysql會是這樣的:

import pymysql 
connection = pymysql.connect(host,user,password,database) 
cursor = connection.cursor() 
cursor.execute("select count(*) from registrants where email = ?") #you need to replace the ? with some actual value or the query will fail 
result = cur.fetchone() 
if result[0]==0: 
    print "E-mail does not exist!"