Cercando di connettersi a Postgres usando pyodbc.Connetti pyodbc a Postgres
posso collegare al DB con isql:
echo "select 1" | isql -v my-connector
Returns:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select 1
+------------+
| ?column? |
+------------+
| 1 |
+------------+
SQLRowCount returns 1
1 rows fetched
Ma quando provo a connettermi con pyodbc:
import pyodbc
con = pyodbc.connect("DRIVER={PostgreSQL Unicode}; DATABASE=<dbname>; UID=<username>; PWD=<password>; SERVER=localhost; PORT=5432;")
ottengo il seguente errore :
pyodbc.Error: ('08001', '[08001] [unixODBC]connction string lacks some options (202) (SQLDriverConnect)')
file di obdc.ini assomiglia a questo:
[my-connector]
Description = PostgreSQL connection to '<dbname>' database
Driver = PostgreSQL Unicode
Database = <dbname>
Servername = localhost
UserName = <username>
Password = <password>
Port = 5432
Protocol = 9.3
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
file di ODBCINST.INI assomiglia a questo:
[PostgreSQL ANSI]
Description = PostgreSQL ODBC driver (ANSI version)
Driver = psqlodbca.so
Setup = libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 1
[PostgreSQL Unicode]
Description = PostgreSQL ODBC driver (Unicode version)
Driver = psqlodbcw.so
Setup = libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 1
Note:
- Ubuntu 14.04
- Python 3
- Postgresql 9.3
Ho usato psycopg2 in passato per collegarmi a Postgres, tuttavia la mia attuale azienda utilizza Netezza, Postgres e MySQL. Voglio scrivere 1 modulo di connessione e utilizzare driver diversi per connettersi ai diversi database. Qualsiasi aiuto sarebbe molto apprezzato.
- Grazie
Per un primo tentativo si poteva provare a includere tutto rguments dalla voce odbc.ini nella stringa di connessione e vedere se funziona. –
@GordThompson - grazie. Provato e ancora senza fortuna. –
Funziona se si usa 'DSN = my-connector'? –