Kevin john Hustings
Kevin john Hustings

Reputation: 11

Why is this query not working from python to SQL?

I am new to coding and databases, I can not get the query to work if I write it long hand but I have a lot to carry out and want it in a function but cannot get it to work, it returns a parameters error

import  mysql.connector

def connection_check_1(query, value):

    mydb = mysql.connector.connect(
        host="******",
        user="*****",
        passwd="*****",
        database="****"
    )

    mycursor = mydb.cursor()
    mycursor.execute(query, (value))
    myresult = mycursor.fetchall()
    mydb.close()
    return myresult

value = "sheep"
query = 'select inlicence from licence where animal = %s'
myresult = connection_check_1(query, value)
print(myresult)

Here is the SQL table I have

create table licence 
(
    animal varchar (20) primary key,
    inlicence int (1)
);

This is the error I get

Traceback (most recent call last):
File "*******************", line 20, in
myresult = connection_check_1(query, value)
File "********************", line 13, in connection_check_1
mycursor.execute(query, (value))
File "********************************************88", line 246, in execute
prepared = self._cnx.prepare_for_mysql(params)
File "/home/kev/PycharmProjects/test bed/venv/lib/python3.5/site-packages/mysql/connector/connection_cext.py", line 535, in prepare_for_mysql
raise ValueError("Could not process parameters")
ValueError: Could not process parameters

I have tried changing the way the query is written, changing it to fetchall().

Upvotes: 1

Views: 2130

Answers (1)

Mureinik
Mureinik

Reputation: 311073

Wrapping a value with () doesn't turn it in to a tuple. You probably meant to add a comma there:

mycursor.execute(query, (value,))
# Creates a one-element tuple-^

Upvotes: 4

Related Questions