我正在尝试从 teradata db 获取数据,并且得到 float 的 NaN 值,但如果我在 SQL 脚本中使用cast(val as float),则可以正常工作。我该如何修复它?
代码:
import teradata
udaExec = teradata.UdaExec(appName = 'sel', version = '1.0', logConsole=False)
session = udaExec.connect(method='odbc',
system = 'db,
username = 'usr,
password='psw',
driver= 'Teradata',
charset='UTF8'
)
pd.read_sql('select 100000.0 as float_, 100000 as number_, cast(100000.0 as float) as float_cast', session)
输出:
float_ number_ float_cast
NaN 100000.0 100000.0
最佳答案
我为同样的问题苦苦挣扎了几个小时。事实证明,无需更改 teradata 模块即可轻松修复此问题。
只需添加 USEREGIONALSETTINGS 参数即可:
session = udaExec.connect(
method= 'odbc'
, driver = 'Teradata'
, charset = 'UTF8'
, dsn=dsn
, USEREGIONALSETTINGS='N'
, username=username
, password=password
)
之后你应该得到你想要的:
float_ number_ float_cast
0 100000.0 100000.0 100000.0
关于python-3.x - teradata python 模块, float 为 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197188/