python - 使用 python 检查电子邮件是否已存在于 MySQLdb 中

标签 python mysql mysql-python

我的目标是检查 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 语法错误。我尝试使用“'”“'”左括号和右括号来转义它们,但它不起作用并且会使网页崩溃。

最佳答案

你想要:

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

但是会看看 .fetchone() 应该可以工作,并且 SQL 中也有 EXISTS (因此它应该有一个唯一的约束并让数据库解决它)并返回一个 bool 类型的空结果。

关于python - 使用 python 检查电子邮件是否已存在于 MySQLdb 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687707/

相关文章:

python - 为什么策略迭代和值迭代方法对于最优值和最优策略给出不同的结果?

python - Python Generator 抽象基类没有实现必要的 __del__,这是故意的吗?

python - LNK4001 在构建 Python 扩展时仍然提供 obj 文件?

mysql - 查询获取两个表mysql中的最大值

mysql - python-mysql fetchone() 类型不匹配?

python - 删除python中的所有html?

mysql - 通过 Node 将 JSON-Object 传递到 MYSQL 列

php - Yii findAllByAttributes 单个表中两个日期之间的值

Windows Python2.7安装mysqldb报错退出状态2

python - MySQL 连接器 python 35 大型查询资源暂时不可用?