PyODBC를 사용하여 Python에서 Teradata 데이터베이스를 쿼리하려고합니다. 데이터베이스에 대한 연결이 올바르게 설정되었습니다. 그러나 결과를 가져 오려고하면 "Decimal : u ''에 유효하지 않은 리터럴이 표시됩니다. 도와주세요.Python/Teradata의 쿼리에 문제가 발생했습니다.
파이썬 여기에 2.7.3
코드와 결과로, RHEL6 오전 : 나는 상자 밖으로 그 pyodbc대로 작동하지 않을 수 있습니다 발견
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''
드라이버가 고정 소수점 숫자를 예상하고 빈 문자열을 반환하는 것처럼 보입니다. 테이블 스키마는 어떤 모습입니까? 어떤 행이 반환되어야합니까? – cmd
질문에 감사드립니다. 결과 세트로 작업해야하는 Python 스크립트에서 Teradata 데이터베이스 연결을 설정하는 데 도움이되었습니다. :). – Jubbles