2009-08-18 6 views
12

Je veux écrire un script python qui remplit une base de données avec quelques informations. Une des colonnes de ma table est un BLOB que je voudrais enregistrer un fichier pour chaque entrée.Comment insérer/récupérer un fichier stocké en tant que BLOB dans une base de données MySQL en utilisant python

Comment puis-je lire le fichier (binaire) et l'insérer dans la base de données en utilisant python? De même, comment puis-je le récupérer et écrire ce fichier à un emplacement arbitraire sur le disque dur?

Répondre

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

Ce code fonctionne bien sûr comme il est écrit que si votre table a juste la colonne blob et ce que vous voulez faire est INSERT, mais bien sûr, vous pouvez facilement modifier pour ajouter plus de colonnes, utilisez la commande UPDATE au lieu de INSERT, ou quoi que ce soit que vous avez exactement besoin de faire.

Je suppose également que votre fichier est binaire plutôt que texte, etc; encore une fois, si mes suppositions sont incorrectes, il est facile pour vous de modifier le code ci-dessus en conséquence.

Une sorte de SELECT sur cursor.execute, puis une sorte d'aller chercher du curseur, comment vous récupérer des données BLOB, exactement comme vous récupérez tout autre type de données.

+0

Il semble que MySQL ait commencé à donner des avertissements à propos de ce genre de chose. Maintenant, il faut utiliser "... VALUES (** _ binary **% s)" – Wodin

0

Vous pouvez insérer et lire des BLOB à partir d'un DB comme tous les autres types de colonnes. De la vue de l'API de base de données, il n'y a rien de spécial à propos des BLOB.