使用Teradata python库从十进制(18,6)中选择返回NaN
Evn:Python 3.6、windows 10、 连接:使用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(
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上发现了一个与十进制数据类型相关的问题。我不知道这是否是你在这里遇到的,但我很高兴你找到了一个不同的解决办法。干杯