【发布时间】:2012-02-23 15:42:14
【问题描述】:
我正在编写一个模块,其中电子邮件字符串在插入数据库之前经过验证。当我尝试输入无效的电子邮件字符串时,它会打印带有错误电子邮件消息的 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
得到答案,伙计们!在 except 块中创建异常实例后,我知道 import re 丢失了。解决了这个问题。
【问题讨论】:
-
显然,您在
try/except块中隐藏了一个有用的异常。这正是您不应该捕获所有异常的原因。 -
首先,您使用 1 和 0 而不是内置的
True和False是否有原因?如果我们能看到正确电子邮件的示例,那将会有所帮助。 -
好吧..你明白了我现在尝试过的一点。我已经编辑了我的问题,所以你可以在那里查看我的最新代码。
标签: python python-2.7 python-module