Can't Encode Pic

MRAB python at mrabarnett.plus.com
Thu Nov 26 20:12:04 CET 2009


Victor Subervi wrote:
> On Thu, Nov 26, 2009 at 1:10 PM, Victor Subervi <victorsubervi at gmail.com 
> <mailto:victorsubervi at gmail.com>> wrote:
> 
>     On Thu, Nov 26, 2009 at 11:52 AM, MRAB <python at mrabarnett.plus.com
>     <mailto:python at mrabarnett.plus.com>> wrote:
> 
>         Victor Subervi wrote:
> 
>             On Thu, Nov 26, 2009 at 10:03 AM, Carsten Haese
>             <carsten.haese at gmail.com <mailto:carsten.haese at gmail.com>
>             <mailto:carsten.haese at gmail.com
>             <mailto:carsten.haese at gmail.com>>> wrote:
> 
>                cursor.execute('update products set pic1=%s where ID=1',
>                (MySQLdb.Binary(pic1),))
> 
>                [That comma between the two closing parentheses is not a
>             typo. Do not
>                leave it out!]
> 
> 
>             A problem occurred in a Python script. Here is the sequence
>             of function calls leading up to the error, in the order they
>             occurred.
>              /var/www/html/angrynates.com/cart/addEdit.py
>             <http://angrynates.com/cart/addEdit.py>
>             <http://angrynates.com/cart/addEdit.py>
> 
>               85   print '<body>\n</html>'
>               86   db.commit()
>               87   cursor.close()
>               88
>               89 addEdit()
>             addEdit = <function addEdit>
>              /var/www/html/angrynates.com/cart/addEdit.py
>             <http://angrynates.com/cart/addEdit.py>
>             <http://angrynates.com/cart/addEdit.py> in addEdit()
> 
>               66       id = 0
>               67       cursor.execute(sql)
>               68       cursor.execute('update products set pic1=%s where
>             ID=1' (MySQLdb.Binary(pics[0]),))
>               69       for col in colNamesPics:
>             cursor = <MySQLdb.cursors.Cursor object>, cursor.execute =
>             <bound method Cursor.execute of <MySQLdb.cursors.Cursor
>             object>>, global MySQLdb = <module 'MySQLdb' from
>             '/usr/lib64/python2.4/site-packages/MySQLdb/__init__.pyc'>,
>             MySQLdb.Binary = <function Binary>, pics =
>             ['\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x02\x01\x00H\x00H\x00\x00\xff\xe1\x13\xd5Exif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x07\x01\x12\x00\x03\x00\x00\x00\x01...\xdb\x9f\x94\xa9\xfds\xc9y\xb1W\xda\xd66\x9azS\x84\xd1\x1f\x93\xa9\xfdG\x0fm\xe3\x84\x01\xc5\x94\xfc\x88\xcf\x06f\xc5_\x7fPS6x\x076*\xff\x00\xff\xd9',
>             '', '']
> 
>             TypeError: 'str' object is not callable
>                  args = ("'str' object is not callable",)
> 
>             Please advise.
> 
> 
>         On line 68 you have a string literal immediately followed by a
>         tuple, so
>         it looks like you're trying to call a string, hence the
>         exception. Put a
>         comma between the string literal and the tuple.
> 
> 
> Hang on. Not done yet. The line of code I gave you was just a test case. 
> The real ones, and the error they threw, follows:
> 
> A problem occurred in a Python script. Here is the sequence of function 
> calls leading up to the error, in the order they occurred.
>  /var/www/html/angrynates.com/cart/addEdit.py 
> <http://angrynates.com/cart/addEdit.py>
>    87   print '<body>\n</html>'
>    88   db.commit()
>    89   cursor.close()
>    90
>    91 addEdit()
> addEdit = <function addEdit>
>  /var/www/html/angrynates.com/cart/addEdit.py 
> <http://angrynates.com/cart/addEdit.py> in addEdit()
>    71       for pic in pics:
>    72         sql = 'update %s set %s=%s where ID=%s;' % (t, 
> colNamesPics[i], '%s', str(id))
>    73         cursor.execute(sql, (MySQLdb.Binary(pics[id]),))
>    74         i += 1
>    75     elif whatDo == 'insert':
> cursor = <MySQLdb.cursors.Cursor object>, cursor.execute = <bound method 
> Cursor.execute of <MySQLdb.cursors.Cursor object>>, sql = 'update 
> products set pic1=%s where ID=1;', global MySQLdb = <module 'MySQLdb' 
> from '/usr/lib64/python2.4/site-packages/MySQLdb/__init__.pyc'>, 
> MySQLdb.Binary = <function Binary>, pics = 
> ['\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x02\x01\x00H\x00H\x00\x00\xff\xe1\x13\xd5Exif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x07\x01\x12\x00\x03\x00\x00\x00\x01...\xdb\x9f\x94\xa9\xfds\xc9y\xb1W\xda\xd66\x9azS\x84\xd1\x1f\x93\xa9\xfdG\x0fm\xe3\x84\x01\xc5\x94\xfc\x88\xcf\x06f\xc5_\x7fPS6x\x076*\xff\x00\xff\xd9'], 
> id = '1'
> 
> TypeError: list indices must be integers
>       args = ('list indices must be integers',)
> 
The traceback explains what the problem is: you're indexing a list, but
the index you're providing isn't an integer.

Remember that an integer is not a string and a string is not an integer.



More information about the Python-list mailing list