Search code examples
pythonmysqlpython-3.xprepared-statementmysql-python

Prepared Statements in MySQL - Trying to remove a row results in ProgrammingError


I want to use prepared statements to remove a row from a table, but it results in an error: mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement

Relevant code:

db = mysql.connector.connect(
    host='localhost',
    user='user',
    database='web_board',
    password='password',
    auth_plugin='mysql_native_password'
)

crs = db.cursor()

# construct the query and remove post from the database
query = 'DELETE FROM posts WHERE postid=%s'
crs.execute(query, tuple(request.data))

db.commit()

crs.close()
db.close()

request.data looks like this: b'9b23f24e-ff4d-4113-85ae-ff8a4a5de3be'


Solution

  • As the documentation states, to use prepared statements, you should instantiate your cursor with following config:

    crs = db.cursor(prepared=True)
    

    Prepared statements executed with MySQLCursorPrepared can use the format (%s) or qmark (?) parameterization style.