【问题标题】:Python Teradataml ConnectionPython Teradataml 连接
【发布时间】:2020-05-30 11:39:40
【问题描述】:

我正在尝试使用 Teradata 的 Python teradataml 库来使用 LDAP 的 logmech 创建一个简单的数据库连接。但是,我收到一个“NoneType”属性错误,ojbect 没有与 sqlalchemy_engine.dialect 相关的属性方言。

我创建连接的代码更改了主机名

import teradataml as tdml
from teradataml import *

hostname = "address of host"
schema = "DL_RBA_DSS"

td_context = create_context(host = hostname, logmech='LDAP', temp_database_name = schema)
print(td_context)

运行代码时出现以下错误:

File "c:/Python/teradatamlconnection.py", line 7, in <module>
    td_context = create_context(host = hostname, logmech='LDAP', temp_database_name = schema)
  File "C:\Users\UserID\AppData\Local\Programs\Python\Python36\lib\site-packages\teradataml\context\context.py", line 287, in create_context
    _load_function_aliases()
  File "C:\Users\UserID\AppData\Local\Programs\Python\Python36\lib\site-packages\teradataml\context\context.py", line 532, in _load_function_aliases
    __set_vantage_version()
  File "C:\Users\UserID\AppData\Local\Programs\Python\Python36\lib\site-packages\teradataml\context\context.py", line 562, in __set_vantage_version
    if td_sqlalchemy_engine.dialect.has_table(td_sqlalchemy_engine, "versionInfo", schema="pm"):
AttributeError: 'NoneType' object has no attribute 'dialect'

我已尝试更新 teradatasqlalchemy 和 sqlalchemy 库,但仍然收到错误消息。它表明所有要求都已满足:

PS C:\Python\dsssecurity> pip install teradatasqlalchemy --upgrade

Requirement already up-to-date: teradatasqlalchemy in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (16.20.0.8)
Requirement already satisfied, skipping upgrade: teradatasql in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradatasqlalchemy) (16.20.0.52)
Requirement already satisfied, skipping upgrade: sqlalchemy>=1.2.11 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradatasqlalchemy) (1.3.13)
Requirement already satisfied, skipping upgrade: pycryptodome in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradatasql->teradatasqlalchemy) (3.9.0)
PS C:\Python\dsssecurity> pip install teradataml --upgrade
Requirement already up-to-date: teradataml in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (16.20.0.4)
Requirement already satisfied, skipping upgrade: teradatasql in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradataml) (16.20.0.52)
Requirement already satisfied, skipping upgrade: pandas>=0.22 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradataml) (1.0.1)
Requirement already satisfied, skipping upgrade: psutil in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradataml) (5.6.3)
Requirement already satisfied, skipping upgrade: teradatasqlalchemy>=16.20.0.8 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradataml) (16.20.0.8)
Requirement already satisfied, skipping upgrade: pycryptodome in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradatasql->teradataml) (3.9.0)
Requirement already satisfied, skipping upgrade: numpy>=1.13.3 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from pandas>=0.22->teradataml) (1.18.1)
Requirement already satisfied, skipping upgrade: pytz>=2017.2 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from pandas>=0.22->teradataml) (2017.2)
Requirement already satisfied, skipping upgrade: python-dateutil>=2.6.1 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from pandas>=0.22->teradataml) (2.6.1)
Requirement already satisfied, skipping upgrade: sqlalchemy>=1.2.11 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from teradatasqlalchemy>=16.20.0.8->teradataml) (1.3.13)
Requirement already satisfied, skipping upgrade: six>=1.5 in c:\users\UserID\appdata\local\programs\python\python36\lib\site-packages (from python-dateutil>=2.6.1->pandas>=0.22->teradataml) (1.11.0)

【问题讨论】:

  • 您如何提供连接所需的用户名和密码(和/或日志数据)属性?
  • 在使用 LDAP 的 logmech 时,它是文档中的可选字段。
  • 它只是“可选”的,因为用户名/密码可以指定为 logdata 属性值的一部分,而不是单独的用户名/密码属性。
  • 使用 logdata 提供用户名和密码时的语法是什么样的? logdata:可选参数。为 LOGMECH 命令指定超出登录机制所需的参数,例如用户 ID、密码和令牌(在 JWT 的情况下)以成功验证用户。类型:str
  • 接受任何authcid=diruser password=dirpass 或只是diruser password=dirpassdiruser@@dirpass 格式。如果有多个映射,那么您可以为要使用的数据库 user= 和/或 profile= 附加限定符;如果有多个目录领域,您可以附加 realm= 限定符。

标签: python sqlalchemy teradata


【解决方案1】:

对于logmech='LDAP',您必须通过单独的属性或作为logdata 字符串的一部分提供用户名和密码。

对于日志数据,字符串可以以authcid=diruser password=dirpass 或只是diruser password=dirpassdiruser@@dirpass 的任何格式开头。如果有多个目录映射,那么您可以为要使用的数据库 user= 和/或 profile= 附加限定符;如果有多个目录领域,您可以附加 realm= 限定符`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 2017-08-05
    • 2020-06-17
    • 2011-10-11
    • 2011-05-30
    • 2011-01-09
    • 2019-03-11
    • 2012-11-06
    相关资源
    最近更新 更多