Civoknats
Civoknats

Reputation: 79

MySQL/Python -> Wrong Syntax for Placeholder in Statements?

I am trying to use placeholder in an insert-statement.

I am using PyCharm/Python 3.6, a MySQL-Database, and the mysql.connector (don't know which of them exactly.)

enter image description here

Why doesn't the following code work?

insert_stmt = "INSERT INTO mydb.datensatz (Titel) VALUES ('%s');"
data = (titel)
cursor.execute(insert_stmt, data)
cnx.commit() 

titel is a string.

This is what gets inserted, but I need to have the titel-string into that row. enter image description here

When deleting the ' ' in the values-braces, PyCharm gives me an error with incorrect MySQL-syntax.

How to use placeholders in this case? How could I use more placeholders for example at inserting into more columns than one? Research didn't help.

Upvotes: 1

Views: 2380

Answers (1)

Nick
Nick

Reputation: 7451

You need to remove the quotes from the %s AND make sure your parameters are a in a tuple:

insert_stmt = "INSERT INTO mydb.datensatz (Titel) VALUES (%s);" # Removed quotes around %s
data = (titel,) # Added trailing comma to make tuple
cursor.execute(insert_stmt, data)
cnx.commit()

When you have a single value in a tuple, you must include a trailing comma: (item,)

Upvotes: 1

Related Questions