什么是错的这个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

得到的答复家伙! 除了块创建异常实例后,我才知道是进口再失踪了。 这解决了这个问题。

--------------解决方案-------------

在validateEmail您使用的模块重,但你没有导入。

我会打印出异常,看看为什么它的失败。

有没有可能是一个例外在if块抛出? 将一个print语句中的except块以检查。

此外,它通常是一个坏主意,有一个包罗万象的except块。 如果你期待数据库错误则有不同的块捕获它们。

分类:蟒蛇 时间:2012-07-07 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.466 (s). 10 q(s)