Python, Flask, MySQL - Проверьте, существует ли электронная почта в базе данных

0

Я довольно плохо знаком с SQL, но он мне нужен для школьного проекта. Я пытаюсь сделать (Python) веб-приложение, которое требует учетных записей. Я могу поместить данные в свою базу данных SQL, но теперь мне нужен какой-то способ проверить, существует ли внутри базы данных электронное письмо (введенное через HTML-форму). Наверное, самый простой запрос, но я не знаю, как начать. :(

Извините, если это дублирующий вопрос, но я не могу найти там что-нибудь, что делает то, что мне нужно.

  • 0
    Какие столбцы в вашей таблице БД?
  • 0
    - Имя базы данных: основы - Имя таблицы: пользователи - имя столбца: электронная почта
Показать ещё 3 комментария
Теги:
flask

2 ответа

0
Лучший ответ

Я смог решить мою проблему, просто используя INSERT IGNORE и после этого проверяя, был ли он проигнорирован первичным ключом.

Спасибо всем, кто помог, хотя!

1

если вы используете SQLAlchemy в вашем проекте:

@app.route("/check_email")
def check_email():
    # get email from you form data
    email = request.form.get("email")

    # check if someone already register with the email
    user = Users.query.filter_by(email=email).first()
    if not user:
        # the email doesnt exist
        pass
    else:
        # the email exists
        pass

Users.query.filter_by(email=email).first() равно SQL:

SELECT * from users where email="EMAIL_FROM_FORM_DATA"

если вы используете pymsql (или что-то в этом роде):

import pymsql

@app.route("/check_email")
def check_email():
    # get email from you form data
    email = request.form.get("email")

    conn = connect(host='localhost',port=3306,user='',password='',database='essentials')
    cs1 = conn.cursor()
    params = [email]
    # cursor return affected rows
    count = cs1.execute('select * from users where email=%s', params)  # prevent SqlInject

    if count == 0:
        # count 0 email
    else:
        # the email exists
        # and if you want to fetch the user info
        user_info = cs1.fetchall()  # the user_info should be a tuple


    # close the connection
    cs1.close()
    conn.close() 
  • 0
    Используя ваш «стиль атаки»;) ничего не выводится как количество. Неважно, что это за электронная почта.
  • 0
    Вы используете pymysql ? или другой клиент mysql? Там могут быть различия между ними. Кстати, первая строка должна быть from pymysql import connect .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню