我正在编写一个模块,其中电子邮件字符串在插入数据库之前已经过验证。当我尝试输入无效的电子邮件字符串时,它会输出带有错误电子邮件的其他块,但是当我输入正确的电子邮件字符串时它不会做任何事情这是代码:
#!/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
有什么建议吗?
得到了答案!在创建除了块之外的异常实例后,我知道导入re丢失了。这解决了问题。
答案 0 :(得分:0)
在validateEmail中你使用模块re,但你没有导入它。
答案 1 :(得分:-2)
我会打印出异常,看看它失败的原因。
答案 2 :(得分:-2)
是否可能在if块中抛出异常?在except块中放置一个print语句来检查它。
除了阻止之外,拥有一个全能的通常也是一个坏主意。如果你预料到数据库错误,那么就有一个可以捕获它们的except块。