首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Vertica:如何在vertica-python模块中使用Kerberos身份验证?

Python Vertica:如何在vertica-python模块中使用Kerberos身份验证?
EN

Stack Overflow用户
提问于 2018-06-19 04:39:20
回答 1查看 386关注 0票数 1

我正在使用优步的vertica-python原生python适配器(https://github.com/uber/vertica-python),并尝试将kerberos身份验证与其集成。有没有办法让我这么做?

问题:我要与脚本一起使用的数据库用户将身份验证方法kerberos设置为最高优先级,vertica-python适配器似乎只有基于密码的身份验证。我读过Vertica文档,它说,如果优先级设置为使用Kerberos,那么它是Vertica要求的唯一身份验证方法。

EN

回答 1

Stack Overflow用户

发布于 2019-01-15 14:05:50

我正在寻找一个类似的答案来使用Vertica与Airflow。另一方面,我可以告诉你我如何在Kerberos和Python中使用Vertica,在我的案例中,我发现最好的解决方案是使用ODBC。

首先安装ODBC客户端,如果您使用的是Linux或Mac,可以访问下一个站点:unixodbc

然后在客户机上配置DSN,您只需编辑主文件夹中的默认文件,如下所示(例如Mac和Linux):~/.odbc.ini:

代码语言:javascript
复制
[ConnectionAliasABC]
Description = Database description
# Driver for MAC
# Driver = /Library/Vertica/ODBC/lib/libverticaodbc.dylib
# Driver for Linux
Driver = /opt/vertica/lib64/libverticaodbc.so
Database = DatabaseName
ServerName = ServerHost
UID = username
Port = 5433
KerberosServiceName = kerberosServiceName
KerberosHostname = kerberosHostname

然后,您可以使用下面的代码片段:

代码语言:javascript
复制
    import pyodbc


    # here you should init a kerberos ticket, we use a keytab file for this
    initKerberos()

    odbc_dsn = 'ConnectionAliasABC' # same as the .odbc.ini file section

    print(f'Connecting to Vertica using dsn: {odbc_dsn}')

    connection = pyodbc.connect(f'DSN={odbc_dsn}')
    connection.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
    connection.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
    connection.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-16')
    connection.setencoding(encoding='utf-8')

    cursor = conn.cursor()
    cursor.execute("SELECT dummy as test_column_name FROM DUAL")
    row = cursor.fetchone()
    print(f'query result: {row[0]}') # this should show an 'X'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50917141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档