FAQ
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??

Search Discussions

  • Shubalubdub at Jun 8, 2008 at 7:56 pm

    On Jun 8, 1:43?pm, Iain Adams wrote:
    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".
  • Bukzor at Jun 9, 2008 at 5:46 am

    On Jun 8, 11:43?am, Iain Adams wrote:
    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.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedJun 8, '08 at 6:43p
activeJun 9, '08 at 5:46a
posts3
users3
websitepython.org

3 users in discussion

Iain Adams: 1 post Shubalubdub: 1 post Bukzor: 1 post

People

Translate

site design / logo © 2022 Grokbase