2009-08-18 16 views
12

Bazı bilgileri içeren bir veritabanını dolduran bir python betiği yazmak istiyorum. Masamdaki sütunlardan biri, her giriş için bir dosyayı kaydetmek istediğim bir BLOB'dur.Python kullanarak MySQL db içinde bir dosya olarak saklanan bir dosyaya nasıl eklenir/alınır

Dosyayı (ikili) nasıl okuyabilirim ve python'u kullanarak DB'ye nasıl ekleyebilirim? Aynı şekilde, onu nasıl geri alabilir ve bu dosyayı sabit sürücüdeki bazı rastgele yerlere yazabilirim?

cevap

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

Tabii ki bu kod çalışır, ama tabii ki kolayca daha fazla sütun, kullanım GÜNCELLEME yerine eklemek için ince ayar olabilir INSERT, ya da tam olarak yapmanız gereken şey.

Ayrıca dosyanızın metin, vb. Yine, tahminlerim hatalıysa yukarıdaki kodu buna göre düzeltmeniz kolaydır.

cursor.execute üzerinde SELECT Bir çeşit imleç gelen getiriliyor sonra bazı tür, size veri başka türlü almak aynen gibi BLOB verileri almak nasıl.

+0

Görünüşe göre, MySQL bu tür bir şey hakkında uyarı vermeye başladı. Şimdi biri kullanmalıdır ... ... DEĞERLER (** _ binary **% s) " – Wodin

0

BLOB'ları bir DB'den diğer tüm sütun türleri gibi ekleyebilir ve okuyabilirsiniz. Veritabanı API'sinin görünümünden BLOB'lar hakkında özel bir şey yoktur. sadece yazılı olarak tablo INSERT olduğunu ne yapmak istediğini sadece BLOB sütunu ve varsa