,

Notes ODBC

Voir :

apt-get install unixodbc odbcinst 
apt-get install odbc-postgresql libsqliteodbc libmyodbc 

Sur Debian à ne pas éditer directement, c'est en installant odbc-postgresql, libsqliteodbc, libmyodbc que ce fichier sera mis à jour

/etc/odbcinst.ini

[SQLite]
Description=SQLite ODBC Driver
Driver=/usr/lib/odbc/libsqliteodbc.so
Setup=/usr/lib/odbc/libsqliteodbc.so
UsageCount=1
 
[SQLite3]
Description=SQLite3 ODBC Driver
Driver=/usr/lib/odbc/libsqlite3odbc.so
Setup=/usr/lib/odbc/libsqlite3odbc.so
UsageCount=1
 
[MySQL]
Description		= ODBC Driver for MySQL
Driver		= libmyodbc.so
Setup		= libodbcmyS.so
FileUsage		= 1
CPTimeout		= 
CPReuse		= 
 
[PostgreSQL ANSI]
Description		= PostgreSQL ODBC driver (ANSI version)
Driver		= psqlodbca.so
Setup		= libodbcpsqlS.so
Debug		= 0
CommLog		= 1
UsageCount		= 2
 
[PostgreSQL Unicode]
Description		= PostgreSQL ODBC driver (Unicode version)
Driver		= psqlodbcw.so
Setup		= libodbcpsqlS.so
Debug		= 0
CommLog		= 1
UsageCount		= 2

~/.odbc.ini ou /etc/odbc.ini

[mydb1]
Description     = MySQL MyDB1
Driver          = MySQL
Server          = localhost
Database        = mydb1
Port            = 3306
Socket          =
Option          =
Stmt            =
 
[mydb2]
Description     = MySQL MyDB2
Driver          = MySQL
Server          = localhost
Database        = mydb2
Port            = 3306
Socket          =
Option          =
Stmt            =
 
[tracdb]
Description=SQLite3 Trac
Driver=SQLite3
Database=/home/jean/trac.db
# optional lock timeout in milliseconds
#Timeout=2000

Vérifier la connexion avec iusql

iusql tracdb
iusql mydb1 root P@ssw0rd

Connaître le schéma de la base

Equivalent à show tables

$ iusql -d, -b SQLiteODBC <<< "help"
,,contacts,TABLE,

Équivalent à describe table

$ iusql -d, -b SQLiteODBC <<< "help contacts"
,,contacts,contact_id,4,INTEGER,9,10,10,0,1,,NULL,4,,16384,1,YES
,,contacts,first_name,-1,TEXT,0,65536,10,0,0,,NULL,-1,,16384,2,NO
,,contacts,last_name,-1,TEXT,0,65536,10,0,0,,NULL,-1,,16384,3,NO
,,contacts,email,-1,TEXT,0,65536,10,0,0,,NULL,-1,,16384,4,NO
,,contacts,phone,-1,TEXT,0,65536,10,0,0,,NULL,-1,,16384,5,NO

Exemple en Python

import sqlalchemy
from sqlalchemy.exc import  DBAPIError
 
engine = sqlalchemy.create_engine('mysql+pyodbc://tracdb', encoding='utf-8')
 
try:
	engine.connect()
except DBAPIError:
	pass
 
for row in engine.execute('select * from client'):
    print (row)

Autres

odbcinst -j
unixODBC 2.3.11
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