Newbie help (TypeError: int argument required)

I

Iain Adams

Hi,

I am new to python. I have been having trouble using the MysqlDB. I
get an error pointing from the line

cursor.execute("UPDATE article SET title = %s, text = %s WHERE id =
%u", (self.title, self.text, self.id))

Here is the error:

line 56, in save
cursor.execute("UPDATE article SET title = %s, text = %s WHERE id
= %u", (self.title, self.text, self.id))
File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line
151, in execute
query = query % db.literal(args)
TypeError: int argument required

However when I print out type(self.id) I get <type 'int'>.

So surely I have provided an int argument.

Any ideas anyone??
 
S

shubalubdub

Hi,

I am new to python. I have been having trouble using the MysqlDB. I
get an error pointing from the line

cursor.execute("UPDATE article SET title = %s, text = %s WHERE id =
%u", (self.title, self.text, self.id))

Here is the error:

 line 56, in save
    cursor.execute("UPDATE article SET title = %s, text = %s WHERE id
= %u", (self.title, self.text, self.id))
  File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line
151, in execute
    query = query % db.literal(args)
TypeError: int argument required

However when I print out type(self.id) I get <type 'int'>.

So surely I have provided an int argument.

Any ideas anyone??
From MySQLdb User's Guide (http://mysql-python.sourceforge.net/
MySQLdb.html):

To perform a query, you first need a cursor, and then you can execute
queries on it:

c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))

In this example, max_price=5 Why, then, use %s in the string? Because
MySQLdb will convert it to a SQL literal value, which is the string
'5'. When it's finished, the query will actually say, "...WHERE price
< 5".
 
B

bukzor

Hi,

I am new to python. I have been having trouble using the MysqlDB. I
get an error pointing from the line

cursor.execute("UPDATE article SET title = %s, text = %s WHERE id =
%u", (self.title, self.text, self.id))

Here is the error:

 line 56, in save
    cursor.execute("UPDATE article SET title = %s, text = %s WHERE id
= %u", (self.title, self.text, self.id))
  File "/var/lib/python-support/python2.5/MySQLdb/cursors.py", line
151, in execute
    query = query % db.literal(args)
TypeError: int argument required

However when I print out type(self.id) I get <type 'int'>.

So surely I have provided an int argument.

Any ideas anyone??

Change your u to an s and you'll be fine. If you want a specific
format on the integer, format it first and pass in the string.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top