что не так с этим кодом Python?блок if не выполняется - PullRequest
0 голосов
/ 01 февраля 2012

Я пишу модуль, в котором строка электронного письма проверяется перед его вставкой в ​​БД.Когда я пытаюсь ввести недопустимую строку электронной почты, он печатает блок else с неправильным сообщением электронной почты, но когда я ввожу правильную строку электронной почты, он ничего не делает.Вот код:

   #!/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

Любые предложения, пожалуйста?

edit-1

получил ответ, ребята!после создания экземпляра исключения в блоке кроме я узнал, что импорт re отсутствует.это решило проблему.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2012

Возможно ли, что исключение выдается в блоке if? Поместите оператор печати в блок исключения, чтобы проверить это.

Также обычно плохая идея иметь универсальный за исключением блока. Если вы ожидаете ошибки в базе данных, тогда есть блок исключения, который их перехватывает.

0 голосов
/ 01 февраля 2012

в validateEmail вы используете модуль re, но вы не импортировали его.

0 голосов
/ 01 февраля 2012

Я бы распечатал исключение и увидел, почему оно не работает.

...