如何在 sqlalchemy > presto 连接中指定 https protcol?

8cdiaqws  于 2021-04-06  发布在  Hive
关注(0)|答案(2)|浏览(1207)

我试图通过presto使用sqlalchemy运行hive查询。它使用ldap认证,但我在连接字符串中缺少一些东西。

from sqlalchemy.engine import create_engine

conn_string = 'presto://' + user + ':' + passw + '@' + host + ':' + port + db \
    + ", connect_args={'auth':LDAP}"

eng = create_engine(conn_string)

我收到一个错误信息,说:

Protocol must be https when passing a password

我在搜索时看到了一些关于这个问题的讨论,但没有看到一个明确的解决方案。我尝试了许多组合,包括端口、db等,你知道该如何做吗?

jaql4c8m

jaql4c8m1#

pyhive的 "README "中包含了这样一段话。

create_engine(
    'presto://user@host:443/hive',
    connect_args={'protocol': 'https',
                  'session_props': {'query_max_run_time': '1234m'}}
)

看来你需要做的就是在connect_args中添加'protocol': 'https'

ggazkfy8

ggazkfy82#

我最后用了一个不同的库来工作。

import prestodb

conn=prestodb.dbapi.connect(
    host=host,
    port=port,
    user=user,
    catalog='db_name',
    schema='my_schema',
    http_scheme='https',
    auth=prestodb.auth.BasicAuthentication(user, passw)
)

然后,我能够检索到结果,并把它放到一个dataframe中。所以不需要sqlalchemy。

相关问题