2009-03-27 10 views
2

Je travaille sur un projet Python qui récupère une image à partir de MSSQL. Mon code est capable de récupérer les images avec succès mais avec une taille fixe de 63KB. Si l'image est plus grande que cette taille, cela amène juste les 63 premiers Ko de l'image!Python: Récupérer une image à partir de MSSQL

Ce qui suit est mon 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

Quel est le type de données de la colonne stockant l'image? – kquinn

Répondre

1

Il est difficile de dire ce que genre de problème est lorsque vous utilisez une base de données comme celui-ci. Votre requête ne sélectionne pas explicitement les colonnes, nous n'avons donc aucune idée de la structure de votre table ni des types de colonnes. Je soupçonne que le format de table n'est pas ce que vous attendez, ou le type de colonne est incorrect pour vos données.

Votre code n'a même pas l'air de fonctionner. Vous avez "pour row in rows:" et ensuite ne pas indenter après cela. Peut-être poster votre schéma?

+0

Bonjour, merci chmod700 pour votre réponse .. J'utilise un champ de type de données "Image" et c'est le champ que j'utilise dans la ligne de code belo: FILE.write (ligne [2] [i] [4]) J'ai suspecté ma connectivité avec le serveur MS SQL donc j'ai utilisé pyODBC mais j'ai souffert du même problème. Des idées? –

0

Si votre utilisation de freetds (je pense que vous êtes): Rechercher dans votre freetds.conf pour la « taille du texte » réglage .. norme de son à 63 kb

Questions connexes