Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to use flask variable in calling SELECT query in MariaDB

What is the correct syntax for calling a SELECT query in MariaDB from a Registration Form.
Specifically, in the WHERE clause. I’ve been looking all over the net to debug this and it does not seem to work (semantically).

Here is the code in my python flask.

@app.route('/check_email', methods = ['POST', 'GET'])
def chck_Email():
  if request.method == 'POST':
    visEmail = request.form['email']
    conn = mariadb.connect(**config)
    print(f"WE ARE CONNECTED ORAYT")
    # create a connection cursor
    cur = conn.cursor()
    # execute an SQL statement
    try:
        print(visEmail)
        #sql = " INSERT INTO visitor (Visitor_ID, Visitor_Name)  VALUES( NULL, '{}')".format(Visitor_ID, Visitor_Name)
        current_Email= cur.execute("SELECT user_Email FROM user_account WHERE user_Email = ?",(visEmail,))
        
        print(current_Email)
        if current_Email != None:
            print('Email Invalid: Email already exists!')
            form = Registration_Form()
            exists = {
                "email_exists": True
            }
            return render_template(exists,'register.html', form = form )

""The visEmail is the variable that is supposed to be holding the email address given by the user upon clicking submit, the program then checks in the database if the given email address already exists in the DB.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I printed the data in the visEmail variable to see the string(Which is fine), but the execution in the database returns me with "None" (It should not be returning a None since I already have the given email address on the DB). It is supposed to return the error "Email Already exists"

THank you very much

>Solution :

You’re not fetching the row of results. cur.execute() doesn’t return anything, you have to call cur.fetchone() to get the results, and assign that to current_Email.

    try:
        print(visEmail)
        #sql = " INSERT INTO visitor (Visitor_ID, Visitor_Name)  VALUES( NULL, '{}')".format(Visitor_ID, Visitor_Name)
        cur.execute("SELECT user_Email FROM user_account WHERE user_Email = ?",(visEmail,))
        current_Email = cur.fetchone()
        
        print(current_Email)
        if current_Email != None:
            print('Email Invalid: Email already exists!')
            form = Registration_Form()
            exists = {
                "email_exists": True
            }
            return render_template(exists,'register.html', form = form )
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading