使用Teradata python库从十进制(18,6)中选择返回NaN

使用Teradata python库从十进制(18,6)中选择返回NaN,python,type-conversion,decimal,teradata,Python,Type Conversion,Decimal,Teradata,Evn:Python 3.6、windows 10、 连接: connect = udaExec.connect( method="odbc", system='***', username= username, password= password, driver="Teradata Database ODBC Driver 16.10", dataTypeConverter=datatypes.DefaultDataTypeConverter(

Evn:Python 3.6、windows 10、

连接:

connect = udaExec.connect(
    method="odbc",
    system='***',
    username= username,
    password= password,
    driver="Teradata Database ODBC Driver 16.10",
    dataTypeConverter=datatypes.DefaultDataTypeConverter(
                    useFloat=False) #tried setting to True - same results
)



query = 'sel top 1 MNQ from tb1'
pd.read_sql(query, connect) #this return NaNs as result
read_sql-已强制\u float参数-从默认值True更改为False-未更改任何内容


如何解决这个问题?链接到github问题我们不得不承认——teradata库被浪费了,而且支持时间更长了。使用另一个库轻松解决了我的问题:

from turbodbc import connect
driver="Teradata Database ODBC Driver 16.10"
connection = connect(driver=driver,
                      server=ip, 
                      DBCName='.com', 
                      uid=username,
                      pwd=password)

cursor = connection.cursor()
query = 'sel * from tb'
cursor.execute(query)
data = pd.DataFrame(cursor.fetchallnumpy()) #to get pandas dataframe
data.to_csv('tb.csv')
cursor.close()

比方说,这不是一个解决方案,但您是否尝试过显式强制转换以在SELECT语句中浮动?从tb1中选择TOP 1 CASTMNQ作为浮动;只是想看看是否可以消除NaN。@Robballer是的,它奏效了。在Github上发现了一个与十进制数据类型相关的问题。我不知道这是否是你在这里遇到的,但我很高兴你找到了一个不同的解决办法。干杯