bilder in eine mysql datenbank speichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 23. November 2006, 10:58

Wie, dann geht das bei dir jetzt ohne base64??? Bei mir funktioniert das einfach nicht... Wobei mein insert Befehl ist auch leicht anders:

'INSERT INTO test SET test_blob=%s'

"INSERT INTO TabellenName (data) VALUES (%s);"

Übrigends machst du zweimal ein f.close() (Zeile 69). Außerdem erwartet die execute Methode ein tuple und keine Liste. Also statt [data,] sollte es (data,) sein :)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 23. November 2006, 11:42

Hi Jens!

Also dass man auch eine Liste anstelle eines Tupels an execute weitergeben darf, habe ich getestet. Ist auch wesentlich angenehmer, dass ich viele Statements im Code dynamisch zusammensetze. Dies geht mit einem Tupel nicht.
Zweimal f.close() ist ein Versehen.

Das Einfügen eines Bildes habe ich so gemacht.
Code nur als Prinzipdarstellung:

Code: Alles auswählen

f = file('C:\\Bild.jpg', 'rb')
blobdata = f.read()
f.close()
cursor.execute('INSERT INTO <table> SET test_blob=%s;', [blobdata,])


Grüße und danke für die vielen Tipps
Jamil
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 23. November 2006, 11:47

Vielleicht sollte ich wirklich mal den anderen SQL-Statement ausprobieren... Aber noch eine Frage, welche DB nutzt du? Ich hab es mit MySQL probiert...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 23. November 2006, 11:56

Hi!

Also ich benutze auch MySQL. Version 4.1 mit UTF-8 als Zeichensatz.

Gruß
Jamil
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Beitragvon N317V » Donnerstag 23. November 2006, 12:09

Ich hab das ja schon oft gesehen und oft nachgefragt und ich will hier auch kein Fass aufmachen, aber ich hab es einfach noch nie verstanden: warum speichert man Bilder in einer SQL-Datenbank? Das bläht das ganze doch nur unnötig auf. Ich speichere in der Datenbank lediglich den Speicherort des Bildes samt Namen. Das kann ich dann schön in einer Query mit abfragen (z.B. zeig mir alle JPEGs oder alle im Ordner 'fuddel'). Die Binärdaten des Bildes bringen mir doch i.d.R. gar nichts, außer wenn ich die Dateigröße abfragen will. Ich glaube, das Dateisystem, das im Prinzip ja auch eine Datenbank darstellt, ist für Binärdaten viel besser optimiert was die Performance anbelangt als jede SQL-Datenbank.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 23. November 2006, 12:12

Hi N317V!

Weshalb ich das mache, habe ich oben beschrieben.
Die Bilder begrenze ich auf 100 KB Größe. Da ich maximal ca. 80 solcher Bildchen in der DB speichere sehe ich keine Probleme.

Viele Grüße
Jamil
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Beitragvon N317V » Donnerstag 23. November 2006, 12:26

JR hat geschrieben:Weshalb ich das mache, habe ich oben beschrieben.

Sorry, hatte ich zuerst nicht gesehen. Die Serveranwendung besteht also lediglich aus der DB. Alles andere ist clientseitig implementiert. Richtig?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 23. November 2006, 12:30

Hi!

Ja, so ist es. Jedes Vereinsmitglied bekommt den Client zum Installieren. Die Daten liegen auf einem MySQL-Server. Sie werden zum einen in unserem Internetportal (Plone) angezeigt, können aber komfortabler über die Clientsoftware verwaltet werden.
Daten bestehen aus Personenverzeichnis, Flugerfassungen, Benutzerverwaltung etc.

Gruß
Jamil
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 23. November 2006, 12:30

Und ich mache es wegen dem nobody Problem, siehe: http://www.python-forum.de/post-49934.h ... body#49934

@JR: Was ich dir noch sagen wollte: Nach dem du ein Bild gelöscht hast, mußt du immer ein "OPTIMIZE TABLE" machen, damit der Speicherplatz auch frei wird.
Das mache ich bei mir in def delete():
http://pylucid.net/trac/browser/PyLucid ... ge.py#L592

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 23. November 2006, 12:32

Hi Jens,

danke für den Hinweis, habe ich aber schon gemacht :-)

Sonst wird die Luft nicht rausgelassen, oder?

Jamil
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 23. November 2006, 12:38

genau :)

Vielleicht auch noch interessant für dich def get_size_info():
http://pylucid.net/trac/browser/PyLucid ... ge.py#L426

Da wird die größen festgestellt und der Overhead ausgerechnet, anhand der gespeicherten echten Daten-Bytes im Vergleich zu der "Data_length" Angabe aus "SHOW TABLE STATUS" :)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Beitragvon JR » Donnerstag 23. November 2006, 12:43

Danke auch für diesen Hinweis, doch ich gestatte meinen Anwendern eh nur einen Upload von einem Bild mit einer max. Größe von 100 KB.

Gruß
Jamil
Benutzeravatar
tiax
User
Beiträge: 152
Registriert: Samstag 23. Juli 2005, 17:28
Kontaktdaten:

Beitragvon tiax » Donnerstag 23. November 2006, 14:09

Ne invoces expellere non possis
xmpp:florian@florianheinle.de
fanus
User
Beiträge: 46
Registriert: Dienstag 13. November 2007, 09:53

Beitragvon fanus » Mittwoch 19. Dezember 2007, 16:06

Hallo Leute,

kann mir bitte jemand sagen, wie ich die blob-datei aus der MySQL datenbank lesen kann??

LG,
fanus
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 19. Dezember 2007, 17:27


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder