2012-12-03 2 views
2

내 목표는 이메일이 이미 mysql 데이터베이스에 있는지 확인하는 것입니다. webform (string)에서 변수에 정보를 가져옵니다. 현재 다음 코드가 있습니다.python을 사용하여 MySQLdb에 이메일이 이미 존재하는지 확인

import MySQLdb 

db = MySQLdb.connect("localhost","username","password","databasename") 
cursor = db.cursor() 
if cursor.execute("select count(*) from registrants where email = " + "'"emailvar"'") == 0: 
    print "it doesn't exist" 

페이지에 액세스하려고하면 내부 서버 오류가 발생합니다. " '"emailvar "'"로 오류를 좁히고 코드는 정상적으로 작동하지만 전자 메일에는 "@"및 "."이 있습니다. SQL 구문 오류가 발생합니다. 나는 괄호를 사용하여 이스케이프를 시도하지만 작동하지 않고 웹 페이지를 충돌시킵니다.

query = 'select count(*) from registrants where email=%s' 
cursor.execute(query, emailvar) 
if next(cursor, None) is None: 
    # whatever 

그러나 일을해야하는 .fetchone() 볼 것이며, (그 고유 제한 조건이 있고 DB 그것을 밖으로 작동하도록해야된다) SQL에서도 EXISTS 및 부울 - 억양을 반환 :

답변

2

당신이 원하는 빈 결과. 내장 다음 = <내장 함수 다음>, 커서 = , 내장 없음 = 없음 <유형 'exceptions.TypeError'> :

+0

가 나는 오류가 커서 객체 인 args = ('커서 객체가 반복자가 아닙니다',) message = '커서 객체가 반복자가 아닙니다' –

+0

@MichaelRocca 오 - 그 방법은 작동하지 않습니다 - 커서 객체 대신에'fetchone'을 시도하십시오 –

+0

@JonClements : 코드를 수정했습니다. 준비된 진술에 대해서도 답을 덧붙이고 싶을 것 같습니다. –

관련 문제