2012-01-31 16 views
-1

私は電子メール文字列がデータベースに挿入される前に検証されるモジュールを作成しています。無効な電子メール文字列を入力しようとすると、間違った電子メールメッセージでブロックされますが、正しい電子メール文字列を入力すると何もしません。コードは次のとおりです。このPythonコードで何が問題になっていますか? ifブロックが実行されていない

#!/usr/bin/python 

import MySQLdb 
import re 
# Open database connection 
db = MySQLdb.connect("localhost","root","root","acl") 

# prepare a cursor object using cursor() method 
cursor = db.cursor() 

def addUser(email,password): 

    try: 
     if validateEmail(email): 
      sql = "INSERT INTO acl_users(email, password) VALUES ('%s', '%s')" % (email, password) 
       # Execute the SQL command 
      cursor.execute(sql) 
       # Commit your changes in the database 
      db.commit() 
     else: 
      print "wrong email" 
    except Exception as inst: 
# Rollback in case there is any error 
    db.rollback() 
    print inst 

def validateEmail(email): 

    if len(email) > 7: 
     if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email) != None: 
      return True 
     else: 
      return False 
    else: 
     return False 

お願いします。

編集-1

回答ありがとうございました!ブロックを除いて例外のインスタンスを作成した後、私はインポートが不足していたことを知る必要があります。問題を解決した

+6

明らかに、あなたは 'try/except'ブロックで有用な例外を隠しています。これはまさにあなたがすべての例外を捕まえてはならない理由です。 –

+2

まず、Built in 'True'と' False'の代わりに1と0を使用する理由がありますか?正しいメールの例を見ることができれば助かります。 – mklauber

+0

ええ。あなたは今私はそれを試してポイントを持っています。あなたの最新のコードをチェックできるように私は自分の質問を編集しました。 – Maverick

答えて

0

あなたはモジュールreを使用しますが、あなたはそれをインポートしませんでした。

-2

私は例外を印刷して、それがなぜ失敗しているのかを見ていきます。

+2

これはコメントセクションに適しています。 – RanRag

+0

ハム申し訳ありませんが、昨日私は答えが悪い場合は、フォームが悪いと言われました。私はそれを把握します:-)ありがとう。 –

-2

ifブロックに例外がスローされる可能性はありますか? print文をexceptブロックに入れてチェックします。

また、catch-all exceptブロックを使用することは悪い考えです。データベースのエラーを予期している場合は、それをキャッチする例外ブロックがあります。

+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええるのは、 – Maverick

関連する問題