Markus
Markus

Reputation: 3782

MySQL db call: not all arguments converted during string formatting

I get the error not all arguments converted during string formatting, when I execute the below-given code:

pro_title = "FSBT"
print "pro_title: " + pro_title
pro_id_query = "SELECT ID FROM projs WHERE pro_title=%s"
cursor.execute(pro_id_query, pro_title)
db.commit()
row = cursor.fetchone()
pro_id = None
if row is not None:
   pro_id = str(row[0])    
print "pro_id: " + pro_id

I also tried format:

pro_id_query = "SELECT ID FROM projs WHERE title={}"
cursor.execute(pro_id_query.format(pro_title))

It only works when I use ' around {}:

pro_id_query = "SELECT ID FROM projs WHERE title='{}'"
cursor.execute(pro_id_query.format(pro_title))

I do not understand why INSERT queries work well with %s, while SELECT queries do not:

insert_query = "INSERT INTO projs (title, description) VALUES (%s, %s) ON DUPLICATE KEY UPDATE `title`=%s"
cursor.execute(insert_query, (pro_title, pro_description, pro_title))

Upvotes: 0

Views: 434

Answers (1)

An0n
An0n

Reputation: 733

pro_title = "FSBI" 
pro_id_query = "SELECT * FROM %s"%(pro_title)
cursor = con.cursor() 
cursor.execute(q) 
result_list = result.fetchall()   
result_list[0][0] 
con.commit() 
con.close()

pro_id_query = cursor.fetchone() while row != False:
print ("The ID is : ", row[0])

*edit

id = input("Id : ")
name = input("Name : ")
cursor = con.cursor()
cursor.execute(""" INSERT INTO names (id, name) VALUES("%s", "%s")"""
          %(id, name))

Upvotes: 1

Related Questions