2013-01-11 21 views
10

Python'da PyODBC ile bir Teradata veritabanı sorgulamaya çalışıyorum. Veritabanına bağlantı tamamıyla kuruldu; ancak, sonucu almaya çalıştığımda, "Ondalık için geçersiz değişmez: u ''" bu hatayı aldım. Yardım lütfen.Python/Pyodbc içinde Teradata sorgulama ile ilgili sorun

Python İşte 2.7.3

kodu ve sonucu ile, RHEL6 üzerinde duyuyorum: Ben kutunun dışında bu pyodbc olarak çalışmayabilir bulundu

import pyodbc 

sql = "select * from table" 

pyodbc.pooling = False 
cnx = pyodbc.connect("DRIVER={Teradata};DBCNAME=host;DATABASE=database; AUTHENTICATION=LDAP;UID=user;PWD=password", autocommit=True, ANSI=True) 
cursor = cnx.cursor() 
rows = cursor.execute(sql).fetchone() 

InvalidOperation       Traceback (most recent call last) 
<ipython-input-25-f2a0c81ca0e4> in <module>() 
----> 1 test.fetchone() 

/usr/local/lib/python2.7/decimal.pyc in __new__(cls, value, context) 
    546      context = getcontext() 
    547     return context._raise_error(ConversionSyntax, 
--> 548         "Invalid literal for Decimal: %r" % value) 
    549 
    550    if m.group('sign') == "-": 

/usr/local/lib/python2.7/decimal.pyc in _raise_error(self, condition, explanation, *args) 
    3864   # Errors should only be risked on copies of the context 
    3865   # self._ignored_flags = [] 
-> 3866   raise error(explanation) 
    3867 
    3868  def _ignore_all_flags(self): 

InvalidOperation: Invalid literal for Decimal: u'' 
+0

Sürücü sabit bir nokta numarası beklediğinden ve boş bir dizeyi geri aldığından görünüyor. Masa şemanınız neye benziyor? Hangi satır geri dönmeli? – cmd

+1

Sorunuz için teşekkürler - sonuç kümeleriyle çalışması gereken Python betiğinde Teradata veritabanı bağlantısını kurmamda bana yardımcı oldu :). – Jubbles

cevap

0

Boş karakteriniz "?" Olarak ayarlanmışsa (Bu varsayılanı inanıyorum) ya da garip başka bir şey, özellikle python vurduğunda veri ile çalışıyorsanız, geri dönen bir sorun olabilir. (Derlemeden önce) setup.py dosyası içerisine doğru yerel zorlama

1

örnek, benim için hile yaptı: Ben bu hatayı vardı

import locale 
locale.setlocale(locale.LC_ALL, 'es_ES.utf8') 
1

ve ben oysa nedeni pyodbc olduğuydu 64 bit buldum benim teradata sürücüsü 32 idi. Problem, unixodbc ile yeni bir sürücü oluşturulduktan sonra çözüldü.

İlgili konular