python-3.x - teradata python 模块, float 为 NaN

标签 python-3.x odbc teradata

我正在尝试从 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/

相关文章:

python - 从字典列表理解中返回 True 或 False

html - 如何使 yattag 源格式更好?

由于 ODBC 数据流任务错误,SSIS 包在 VS 中有效,但在 SSIS 中无效

teradata - 如何创建或替换表

teradata - 在 Teradata 中计算上周数据

python - Pandas merge 每次合并时除以一个值

python - 求值允许其运算符为复合表达式的组合

hadoop - Sqoop导出到Teradata失败,并显示错误-任务尝试无法报告状态600秒钟。杀人

python - 对 Microsoft Server 2012 的 Unicode 查询返回过多结果

php - 在 PHP 中连接到两个不同的数据库?