Hi; I have loaded an image from a form into MySQL using Python as a longblob. Here is my table:
mysql> describe pics; +-------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Specials_ID | int(11) | NO | MUL | NULL | | | Number | tinyint(1) | YES | | NULL | | | Pic | longblob | YES | | NULL | | +-------------+------------+------+-----+---------+----------------+ Here is my Python code that loads the data: pic_zero = form.getfirst("pic_zero") # where pic_zero is an uploaded file (i.e., image) from a form calling this script ... pics = [pic_zero, pic_one, pic_two, pic_three] i = 0 for pic in pics: if pic: sql = 'insert into pics values (Null, "%s", "%s", "%s")' % (max_id, i, "%s") cursor.execute(sql, (MySQLdb.Binary(pic),), ) db.commit() i += 1 Here is the Python code that calls the image: #!/usr/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() id = form['id'].value number = form['number'].value db = MySQLdb.connect(host, user, passwd, db) cursor= db.cursor() cursor.execute("select Pic from pics where ID=%s and Number=%s", (id, number)) content = cursor.fetchall()[0][0].tostring() cursor.close() print 'Content-Type: image/jpeg' print print content Here is the Python error: 14 cursor= db.cursor() 15 cursor.execute("select Pic from pics where ID=%s and Number=%s", (id, number)) 16 content = cursor.fetchall()[0][0].tostring() 17 cursor.close() 18 print 'Content-Type: image/jpeg' content undefined, cursor = <MySQLdb.cursors.Cursor object>, cursor.fetchall = <bound method Cursor.fetchall of <MySQLdb.cursors.Cursor object>>, ].tostring undefinedAttributeError: 'str' object has no attribute 'tostring' args = ("'str' object has no attribute 'tostring'",) Even when I hard code in the correct values I get this error. However, when I select * from pics, where there is only one longblob in the table, it prints out a tremendous load of data which indicates to me that a binary file has indeed been loaded. What I am trying to ascertain is why is this longblob considered a string? How can I more properly test if a binary file has been loaded? TIA, Jack