2

我的目标是检查 mysql 数据库中是否已经存在电子邮件。我将信息从网络表单(字符串)中提取到变量中。我目前有以下代码:

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 语法错误。我试图使用“'”“'”打开和关闭括号来逃避它们,但它不起作用并使网页崩溃。

4

1 回答 1

2

你要:

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

但是会看看.fetchone()哪个应该工作,以及EXISTS在 SQL 中(因此它应该有一个唯一的约束并让数据库解决它)并返回一个布尔式的空结果。

于 2012-12-03T16:42:12.503 回答