Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to read a binary file into a mysql table

1 view
Skip to first unread message

Hans Müller

unread,
Dec 14, 2007, 10:19:41 AM12/14/07
to
Good morning folks,

I cannot read a binary file into a mysql database. Everything I tried did not succeed.

What I tried (found from various google lookups...) is this:

con = MySQLdb.connect(to server)
cur = con.cursor()

cur.execute("insert into data values('file1', %s)", (open("test.jpg", "rb").read(), ))

also this doesn't work:

execute("insert into data values('file1', %s), (MySQLdb.escape_string(open("test.jpg", "rb").read()), ))

I always get this:

Warning: Data truncated for column 'file' at row 1

The blob data is actually chopped.

The Table has two columns, char(100), blob

Has someone a working idea how to get binary file into a blob using MySQLdb and python ?!

System is SuSE 10.0 Linux with python 2.5.1, current MySQLdb version, MySQL is: 5.0.26

Thanks a lot!

Greetings

Hans

Gabriel Genellina

unread,
Dec 14, 2007, 6:41:24 PM12/14/07
to pytho...@python.org
En Fri, 14 Dec 2007 12:19:41 -0300, Hans Müller <Hein...@web.de> escribió:

> I cannot read a binary file into a mysql database. Everything I tried
> did not succeed.
>
> What I tried (found from various google lookups...) is this:
>
> con = MySQLdb.connect(to server)
> cur = con.cursor()
>
> cur.execute("insert into data values('file1', %s)", (open("test.jpg",
> "rb").read(), ))

Try wrapping the file contents with a Binary object (untested):

data = MySQLdb.Binary(open("test.jpg","rb").read())
cur.execute("insert into data values('file1', %s)", (data,))

--
Gabriel Genellina

Benoit

unread,
Dec 15, 2007, 5:51:20 AM12/15/07
to
On Dec 14, 5:41 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:

I was suprised at what I could stick into a MySQL database. Also, you
might wanna compress the binary for database performance.

Hans Müller

unread,
Dec 18, 2007, 4:56:17 AM12/18/07
to
Hello,

thanks a lot for the Binary(). This does the trick, now I can import all my binary data.
But now I found the next problem:
The Blob is now limited to 65535 Bytes. I love all these stone age (16bit) limits on my 64bit machines...
All bigger files a truncated.

Has someone an idea how to solve this ?


Greetings

Hans

Hans Müller

unread,
Dec 18, 2007, 5:05:46 AM12/18/07
to
Sorry, I found the mistake:

There is more than one blob type, blob as a default stores only 64k of data.
LONGBLOB has a 4G limit which is Ok for my purposes.

Happy Christmas to all,

Hans


0 new messages