Да, в Python есть похожая абстракция.
Это из нашего локального регрессионного теста сборки, где мы заверяем, что можем общаться со всеми нашими базами данных всякий раз, когда мы собираем новый Python.
if database == SYBASE:
import Sybase
conn = Sybase.connect('sybasetestdb','mh','secret')
elif database == POSTRESQL:
import pgdb
conn = pgdb.connect('pgtestdb:mh:secret')
elif database == ORACLE:
import cx_Oracle
conn = cx_Oracle.connect("mh/secret@oracletestdb")
curs=conn.cursor()
curs.execute('select a,b from testtable')
for row in curs.fetchall():
print row
(обратите внимание, это простая версия, в нашем коде, поддерживающем multidb, у нас есть класс dbconnection, внутри которого есть эта логика.)