2013-02-09 4 views
2

Python version 2.6 version pyodbc 3.0.6resultset Corrupted utilisant pyodbc

exemple Python code: #/usr/bin/Python26

import pyodbc 
import os 
import sys 

SQL = sys.argv[1]; 

conn = pyodbc.connect('DSN=VerticaDSN') 
cursor = conn.cursor() 

cursor.execute(SQL) 
rows = cursor.fetchall() 
for row in rows: 
    print row[0] 

au lieu des données d'impression tout comme dans le tableau, sorties python données corrompues, seule une partie des données, comme

ps 
t Foods 
smart 
ly Dollar 
enney 
ean 
rd 

attendu ResultSet:

Ames 
Ukrops 
Giant Foods 
Cardsmart 
Aco 
Family Dollar 
JC Penney 
Eckerd 

Pourquoi Resultset est-il corrompu? Des suggestions?

+0

Quel SGBD pour la source de données (SQL Server, Oracle, MySQL, etc.) et quel pilote est utilisé? – Bryan

+0

Vertica. Pilote libverticaodbc.so – Toyway

Répondre

1

Le problème n'est probablement pas dans pyodbc mais dans le pilote ODBC lui-même. Voici plusieurs choses à essayer:

  • Essayez de lancer la colonne dans un autre type de données (pas sûr de ce que la base de données que vous utilisez, mais il est possible que la colonne est en Unicode, et le pilote ne comprend que ASCII ou inverse , je suis enclin à penser que c'est le problème)
  • utilisation client python spécialisé pour votre base de données si elles sont disponibles au lieu de ODBC (comme cx_Oracle, psycopg2)
  • regard sur les paramètres de configuration du pilote ODBC
  • installer le pilote ODBC de un vendeur différent
+0

Cast n'a pas aidé. Jusqu'à présent, j'ai trouvé un seul client, pyvertica, pour travailler avec Vertica. Mais ça ne me va pas. – Toyway

+0

Pourquoi cela ne vous convient-il pas? 'pyvertica' prétend être un clone' psycopg2'. Vous pouvez essayer d'utiliser 'psycopg2' original (cela a fonctionné pour moi de se connecter à la base de données de Greenplum des clients de Windows et de Solaris); BTW: le truc de casting a fonctionné pour moi quand j'ai essayé de lire le type de données exotique 'name' de la base de données Netezza via ODBC, c'est pourquoi j'ai recommandé de l'essayer. –

+0

OK, merci. J'essaierai psycopg2. Mais pour la connexion, il utilise pyodbc, n'est-ce pas? Si c'est le cas, le problème persiste. – Toyway