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

2024-03-29 01:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个模块,在这个模块中,电子邮件字符串在被插入数据库之前会被验证。当我尝试输入无效的电子邮件字符串时,它会打印带有错误电子邮件消息的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

有什么建议吗?你知道吗

编辑-1

找到答案了伙计们!在except块中创建异常实例之后,我知道import re丢失了。解决了问题。你知道吗


Tags: 模块字符串importredbreturnif电子邮件
3条回答

我会打印出异常,看看它为什么会失败。你知道吗

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

此外,除了积木外,拥有一个包罗万象的东西通常是个坏主意。如果您预期到数据库错误,那么就有一个except块来捕获它们。你知道吗

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

相关问题 更多 >