전자 메일 문자열이 db에 삽입되기 전에 유효성이 검사되는 모듈을 작성하고 있습니다. 내가 틀린 전자 메일 문자열을 입력하려고하면 잘못된 전자 메일 메시지로 블록을 인쇄하지만 올바른 전자 메일 문자열을 입력하면 아무것도하지 못합니다.이 python 코드에 어떤 문제가 있습니까? if 블록이 실행되지 않습니다
#!/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
답을 얻었습니다! 블록을 제외하고 예외의 인스턴스를 만든 후에 가져 오기가 누락되었음을 알게되었습니다. 문제를 해결했습니다.
분명히 'try/except' 블록으로 유용한 예외를 숨기고있는 것입니다. 이것이 바로 모든 예외를 포착해서는 안되는 이유입니다. –
먼저, 'True'와 'False'로 구성된 대신에 1과 0을 사용하는 이유가 있습니까? 올바른 이메일의 예를 볼 수 있다면 도움이 될 것입니다. – mklauber
음 .. 너와 내가 지금 시험해 본 점이있어. 제 질문을 편집하여 최신 코드를 확인할 수 있습니다. – Maverick