2009-03-27 14 views
2

Ich arbeite an einem Python-Projekt, das ein Bild von MSSQL abruft. Mein Code kann die Bilder erfolgreich, aber mit einer festen Größe von 63 KB abrufen. Wenn das Bild größer als diese Größe ist, bringt es nur die ersten 63 KB aus dem Bild!Python: Bild von MSSQL abrufen

Nachstehend ist mein Code:

#!/usr/bin/python 
import _mssql 

mssql=_mssql.connect('<ServerIP>','<UserID>','<Password>') 
mssql.select_db('<Database>') 

x=1 
while x==1: 
    query="select TOP 1 * from table;" 
    if mssql.query(query): 
     rows=mssql.fetch_array() 
     rowNumbers = rows[0][1] 
     #print "Number of rows fetched: " + str(rowNumbers) 
     for row in rows: 
     for i in range(rowNumbers): 
      FILE=open('/home/images/' + str(row[2][i][1]) + '-' + str(row[2][i][2]).strip() + ' (' + str(row[2][i][0]) + ').jpg','wb') 
      FILE.write(row[2][i][4]) 
      FILE.close() 
      print 'Successfully downloaded image: ' + str(row[2][i][0]) + '\t' + str(row[2][i][2]).strip() + '\t' + str(row[2][i][1]) 
    else: 
     print mssql.errmsg() 
     print mssql.stdmsg() 
mssql.close() 
+0

Was ist der Datentyp der Spalte Speichern des Bildes? – kquinn

Antwort

1

Es ist irgendwie schwer zu sagen, was das Problem ist, wenn Sie eine Datenbank wie diese verwenden. In Ihrer Abfrage werden keine Spalten explizit ausgewählt. Daher haben wir keine Ahnung, was Ihre Tabellenstruktur ist oder welche Typen die Spalten enthalten. Ich vermute, dass das Tabellenformat nicht Ihren Erwartungen entspricht oder der Spalten-Typ für Ihre Daten nicht korrekt ist.

Auch Ihr Code sieht nicht einmal so aus, als würde er laufen. Sie haben "für Zeile in Zeilen:" und dann nicht danach Einzug. Vielleicht posten Sie Ihr Schema?

+0

Hallo, danke chmod700 für deine Antwort. Ich benutze ein "Bild" Datentyp Feld und das ist das Feld, das ich in der Codezeile benutze: FILE.write (row [2] [i] [4]) Ich habe meine Verbindung mit dem MS SQL-Server vermutet, also habe ich pyODBC verwendet, aber ich hatte das gleiche Problem. Irgendwelche Ideen? –

0

Wenn Ihr freetds mit (ich glaube, Sie sind): Suchen Sie in Ihrem freetds.conf für die ‚Textgröße‘ -Einstellung .. Standard seiner bei 63 kb

Verwandte Themen