【问题标题】:how connect to vertica using pyodbc如何使用 pyodbc 连接到 vertica
【发布时间】:2014-07-25 19:06:30
【问题描述】:

我已经阅读了关于odbc.iniVertica documentationiODBC documentation。我还看到了一个问题with the same error,但无法让连接字符串按照上一个问题的答案中的建议工作。

我目前拥有的:

/etc/odbcinst.ini

[HPVertica] 说明 = HP Vertica ODBC 驱动程序 驱动程序 = /opt/vertica/lib64/libverticaodbc.so

/etc/odbc.ini

[ODBC 数据源]
VerticaDB1 = HP Vertica 上的 db1 数据库

[VerticaDB1]
说明 = HP Vertica 上的 db1 数据库
驱动程序 = HPVertica
数据库 = db1
服务器名 = 10.0.0.67
UID = 数据库管理员
残疾人 =
端口 = 5433
语言环境 = en_GB

[ODBC]
线程 = 1

~/.odbc.ini

[默认]

驱动程序 = VerticaDB1

使用isql进行测试

[root@ip-10-0-0-67 /]# echo "select 1;" | isql -v VerticaDB1
+----------------------------------------------------+
|连接的! |
| |
| sql语句|
|帮助 [表名] |
|退出 |
| |
+----------------------------------------------------+
SQL>选择1;
+----------+
| ?柱子? |
+----------+
| 1 |
+----------+
SQLRowCount 返回 1
提取了 1 行

odbcinst -j 输出:

unixODBC 2.2.14
驱动程序............:/etc/odbcinst.ini
系统数据源:/etc/odbc.ini
文件数据源..:/etc/ODBCDataSources
用户数据源..:/root/.odbc.ini
SQLULEN 大小.......: 8
SQLLEN 大小............:8
SQLSETPOSIROW 大小:8

在 Python 中使用“VerticaDB1”:

>>> 导入 pyodbc
>>> conn = pyodbc.connect("DRIVER={VerticaDB1};UID={dbadmin};PWD={...}")
回溯(最近一次通话最后):
  文件“”,第 1 行,在
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]数据源名称不
已找到,但未指定默认驱动程序 (0) (SQLDriverConnect)')

在 Python 中使用“HPVertica”:

>>> 导入 pyodbc
>>> conn = pyodbc.connect("DRIVER={HPVertica};UID={dbadmin};PWD={...}")
回溯(最近一次通话最后):
  文件“”,第 1 行,在
pyodbc.Error: ('HY000', '[HY000] [unixODBC][Vertica][ODBC] (10430) 不够
为建立与数据源的连接而提供的信息并指定
不提示提供更多信息。 (10430) (SQLDriverConnect)')

【问题讨论】:

    标签: python pyodbc unixodbc vertica


    【解决方案1】:

    尝试使用DSN进行连接:

    conn = pyodbc.connect("DSN=VerticaDB1;UID=dbadmin;PWD=mypassword")
    

    或者,您可以使用DRIVER 进行连接,但您需要提供更多信息,例如哪个数据库、主机和端口:

    conn = pyodbc.connect("DRIVER=HPVertica;SERVER=10.0.0.67;DATABASE=db1;PORT=5433;UID=dbadmin;PWD=mypassword")
    

    【讨论】:

    • 使用 DSN 会导致相同的 Data source name not found... 错误。使用DRIVER 有效:)
    • 附带说明,pyodbc 接受 kwargs 以及字符串。例如。您可以输入:conn = pyodbc.connect(DSN="VerticaDB1", UID="dbadmin", PWD="mypassword"),而不是第一个示例。我觉得这更具可读性,但 2 是完全等价的。
    • 这篇文章引用了一些common odbc/vertica error messages and root causes,这可能会有所帮助,因为我觉得使用DRIVER 不起作用。
    • @Guillaume 链接已失效。
    • @alecxe 我无法更新旧评论,但这里是实时链接:thisdataguy.com/2014/04/29/…
    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多