这个python代码有什么问题? if块没有被执行

时间:2012-01-31 22:08:24

标签: python python-2.7 python-module

我正在编写一个模块,其中电子邮件字符串在插入数据库之前已经过验证。当我尝试输入无效的电子邮件字符串时,它会输出带有错误电子邮件的其他块,但是当我输入正确的电子邮件字符串时它不会做任何事情这是代码:

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

得到了答案!在创建除了块之外的异常实例后,我知道导入re丢失了。这解决了问题。

3 个答案:

答案 0 :(得分:0)

在validateEmail中你使用模块re,但你没有导入它。

答案 1 :(得分:-2)

我会打印出异常,看看它失败的原因。

答案 2 :(得分:-2)

是否可能在if块中抛出异常?在except块中放置一个print语句来检查它。

除了阻止之外,拥有一个全能的通常也是一个坏主意。如果你预料到数据库错误,那么就有一个可以捕获它们的except块。