我已阅读有关odbc.ini的iODBC文档,和Vertica文档。我也看到了一个问题与同样的错误,但无法使连接字符串能够按照前一个问题的答案工作。
我当前拥有的:
/etc/odbcinst.ini
[HPVertica] 描述 = HP Vertica ODBC驱动程序 驱动程序 = /opt/vertica/lib64/libverticaodbc.so
/etc/odbc.ini
[ODBC数据源] VerticaDB1 = HP Vertica上的db1数据库
[VerticaDB1] 描述 = HP Vertica上的db1数据库 Driver = HPVertica Database = db1 Servername = 10.0.0.67 UID = dbadmin PWD = Port = 5433 Locale = en_GB
[ODBC] 线程 = 1
~/.odbc.ini
[默认]使用
Driver = VerticaDB1
isql
测试:
[root@ip-10-0-0-67 /]# echo "select 1;" | isql -v VerticaDB1 +---------------------------------------+ | 已连接! | | | | SQL语句 | | 帮助 [表名] | | 退出 | | | +---------------------------------------+ SQL> select 1; +---------------------+ | ?column? | +---------------------+ | 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":
>>> import pyodbc >>> conn = pyodbc.connect("DRIVER={VerticaDB1};UID={dbadmin};PWD={...}") Traceback (most recent call last): File "", line 1, in pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
在Python中使用"HPVertica":
>>> import pyodbc >>> conn = pyodbc.connect("DRIVER={HPVertica};UID={dbadmin};PWD={...}") Traceback (most recent call last): File "", line 1, in pyodbc.Error: ('HY000', '[HY000] [unixODBC][Vertica][ODBC] (10430) 未提供足够的信息以建立到数据源的连接,同时指定不提示更多信息。 (10430) (SQLDriverConnect)')以上是IT技术相关内容,使用Python编程语言通过pyodbc模块连接数据库时出现错误。如果你想在Python中使用"HPVertica"连接数据库,需要将DRIVER参数改为"HPVertica",但执行后依然报错,显示未提供足够的信息以建立到数据源的连接。
DSN
会导致相同的错误 找不到数据源名称... 使用DRIVER
就可以了 :) - Kermitconn = pyodbc.connect(DSN="VerticaDB1", UID="dbadmin", PWD="mypassword")
。我认为这种方式更易读,但这两种方式是完全等价的。 - Guillaume