Python MySQLdb issues (TypeError: %d format: a number is required, not str) Python MySQLdb issues (TypeError: %d format: a number is required, not str) python python

Python MySQLdb issues (TypeError: %d format: a number is required, not str)


The format string is not really a normal Python format string. You must always use %s for all fields.

refer official document:

If args is a list or tuple, %s can be used as a placeholder in the query. If args is a dict, %(name)s can be used as a placeholder in the query.

-> that is: here %s is NOT formatter, but is a placeholder


I got the same error, but it was for a different reason. The problem was that the string included a '%' and that confused Python:

TemplateStr = '[....] % discount rate  [....]  %s and %sprint TemplateStr % ('abc', 'def')

Python interpreted that "% discount" as "%d" and kept complaining because I was feeding it a string ('abc'), not a number.

It took me a long tome to figure it out!

(The solution is to type %% instead of %.)


try this :

cursor.execute("""                    insert into tree (id,parent_id,level,description,code,start,end)                    values (%s,%s,%s,'%s','%s',%s,%s)                    """%(1,1,1,'abc','def',1,1)                    )