By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,172 Members | 727 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,172 IT Pros & Developers. It's quick & easy.

Newbie help (TypeError: int argument required)

P: n/a
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??
Jun 27 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
On Jun 8, 1:43*pm, Iain Adams <aca04...@shef.ac.ukwrote:
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 WHEREid
= %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".
Jun 27 '08 #2

P: n/a
On Jun 8, 11:43*am, Iain Adams <aca04...@shef.ac.ukwrote:
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 WHEREid
= %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.
Jun 27 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.