Ich habe die iODBC documentation in Bezug auf die odbc.ini
und die Vertica documentation gelesen. Ich sah auch eine Frage with the same error, aber kann die Verbindungszeichenfolge nicht funktionieren, wie in der Antwort der vorherigen Frage vorgeschlagen.wie verbinden mit vertica mit pyodbc
Was ich derzeit haben:
/etc/odbcinst.ini
[HPVertica] Description = HP Vertica ODBC Driver Driver = /opt/vertica/lib64/libverticaodbc.so
/etc/odbc.ini
[ODBC Data Sources] VerticaDB1 = db1 database on HP Vertica [VerticaDB1] Description = db1 database on HP Vertica Driver = HPVertica Database = db1 Servername = 10.0.0.67 UID = dbadmin PWD = Port = 5433 Locale = en_GB [ODBC] Threading = 1
~/.odbc.ini
[DEFAULT] Driver = VerticaDB1
Testen mit isql
[[email protected] /]# echo "select 1;" | isql -v VerticaDB1 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select 1; +---------------------+ | ?column? | +---------------------+ | 1 | +---------------------+ SQLRowCount returns 1 1 rows fetched
odbcinst -j
Ausgänge:
unixODBC 2.2.14 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8
In 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)')
In 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) Not enough information provided to establish a connection to the data source and specified to not prompt for more information. (10430) (SQLDriverConnect)')
Verwenden der 'DSN' Ergebnisse in der gleichen * Datenquellenname nicht gefunden ... * Fehler. 'DRIVER' funktioniert :) – Kermit
Nebenbei bemerkt, pyodbc akzeptiert sowohl Kwargs als auch eine Zeichenkette. z.B. Anstelle des ersten Beispiels könnten Sie Folgendes eingeben: 'conn = pyodbc.connect (DSN =" VerticaDB1 ", UID =" dbadmin ", PWD =" MeinPasswort ")'. Ich finde das besser lesbar, aber die 2 sind genau gleichwertig. – Guillaume
Dieser Beitrag verweist auf einige [gemeinsame odbc/vertica Fehlermeldungen und Grundursachen] (http://thisdwhguy.com/2014/04/29/vertica-odbc-error-messages-and-solutions), könnte es helfen, wie ich finde seltsam, dass 'DRIVER' nicht funktioniert. – Guillaume