Убедитесь, что адрес электронной почты уже существует в MysqlDB Python - PullRequest
2 голосов
/ 16 июня 2020

Я пытаюсь проверить, существует ли электронная почта в моей таблице MYSQL. Я могу успешно подключиться к БД и выполнить SQL запросов к таблице. Но при проверке электронной почты он выдает SyntaxError на '@' как недопустимый синтаксис. Я пробовал использовать escape-символ ('\'), но он по-прежнему вызывает ту же ошибку.

import MySQLdb

# Connect
mydb = MySQLdb.connect(host="localhost",
                    port=3000,
                     user="root",
                     passwd="xxxxxx",
                     db="xxxxxx")

sqlquery = " select * from <tablename> where email = %s"

mycursor.execute(sqlquery, abc@def.com)

#on using quotes around string
#mycursor.execute(sqlquery, 'abc@def.com')
#TypeError: not all arguments converted during string formatting

#row_count = mycursor.rowcount
#print(row_count)

Вывод

(kp_env) storm@storm:/mnt/d$ python abc.py
  File "abc.py", line 40
    mycursor.execute(sqlquery, abc@def.com)
                                  ^
SyntaxError: invalid syntax

Также, если есть лучший способ проверить, существует ли электронное письмо в таблице или нет, дайте мне знать.

1 Ответ

1 голос
/ 16 июня 2020

Ваша строка должна быть идентифицирована как одна строка, и вам нужно использовать кортеж даже для одного параметра

import MySQLdb

# Connect
mydb = MySQLdb.connect(host="localhost",
                    port=3000,
                     user="root",
                     passwd="xxxxxx",
                     db="xxxxxx")

sqlquery = "select * from <tablename> where email = %s"

mycursor.execute(sqlquery, ("abc@def.com",))

Я лично предпочитаю import mysql.connector

Он новее и делает меньше проблем.

...