2009-08-18 62 views
12

Quiero escribir un script de python que llene una base de datos con cierta información. Una de las columnas de mi tabla es un BLOB en el que me gustaría guardar un archivo para cada entrada.Cómo insertar/recuperar un archivo almacenado como un BLOB en MySQL db usando python

¿Cómo puedo leer el archivo (binario) e insertarlo en el DB usando Python? Del mismo modo, ¿cómo puedo recuperarlo y volver a escribir ese archivo en una ubicación arbitraria en el disco duro?

Respuesta

14
thedata = open('thefile', 'rb').read() 
sql = "INSERT INTO sometable (theblobcolumn) VALUES (%s)" 
cursor.execute(sql, (thedata,)) 

Ese código, por supuesto, funciona como está escrito sólo si la tabla tiene simplemente la columna BLOB y lo que quieres hacer es insertar, pero por supuesto aquí se puede modificar para añadir más columnas, uso ACTUALIZACIÓN vez de INSERT, o lo que sea que necesites hacer exactamente.

También estoy asumiendo que su archivo es binario en lugar de texto, etc .; De nuevo, si mis conjeturas son incorrectas, es fácil modificar el código anterior en consecuencia.

Algún tipo de SELECT en cursor.execute, a continuación, una especie de ir a buscar desde el cursor, es la forma de recuperar datos BLOB, exactamente igual que recupere cualquier otro tipo de datos.

+0

Parece que MySQL ha comenzado a advertir sobre este tipo de cosas. Ahora uno debería usar "... VALUES (** _ binario **% s)" – Wodin

0

Puede insertar y leer BLOB de un DB como cualquier otro tipo de columna. Desde la vista de la API de la base de datos, no hay nada especial acerca de los BLOB.

Cuestiones relacionadas