Liste der bekannten Datenbankschnittstellen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi!

Um von Python aus auf eine Datenbank zugreifen zu können, braucht man normalerweise eine Zwischenschicht die sich um die Eigenheiten der jeweiligen Datenbank kümmert -- eine Schnittstelle also.

Es gibt viele solcher Schnittstellen zu den verschiedensten Datenbanken. Python ist damit also wunderbar geeignet, um mit Datenbanken zu arbeiten.

Hier ist eine Auflistung der bekannten Datenbanken und der zugehörigen Schnittstellen:

SQLite --> sqlite3
SQLite: http://www.sqlite.org/
sqlite3-Modul (ab Python 2.5) https://docs.python.org/2/library/sqlite3.html

PostgreSQL --> psycopg2
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
psycopg2: http://initd.org/tracker/psycopg/wiki/PsycopgTwo
psycopg2 (Windows Install): http://www.stickpeople.com/projects/pyt ... index.html

PostgreSQL --> py-postgresql
Für Python 3 geeignet. Reines Python oder mit optionaler C-Optimierung.
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
PostgresPy: http://python.projects.postgresql.org/

PostgreSQL --> PyGreSQL
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
PyGreSQL: http://www.pygresql.org/

PostgreSQL --> PoPy
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
PoPy: http://www.zope.org/Members/tm/PoPy
PoPy (SourceForge): http://sourceforge.net/projects/popy

PostgreSQL --> pg8000
Reine Python-Schnittstelle -- kein Binary notwendig.
Auch für Python 3!
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
gp8000: http://pybrary.net/pg8000/

PostgreSQL --> python-pgsql
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
python-pgsql: http://pypi.python.org/pypi/python-pgsql

PostgreSQL --> pg_proboscis
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
pg_proboscis:
- http://pypi.python.org/pypi/pg_proboscis/
- http://python.projects.postgresql.org/

PostgreSQL --> pyPgSQL
PostgreSQL: http://www.postgresql.org/
PostgreSQL (deutsch): http://www.postgres.de/
pyPgSQL: http://pypgsql.sourceforge.net/

MS SQL-Server --> pyMsSql:
MS SQL-Server: http://www.microsoft.com/sql/
MS SQL-Server (Wikipedia): http://de.wikipedia.org/wiki/MSSQL
pyMsSQL: http://pymssql.sourceforge.net/

Firebird / Interbase --> KInterbasDB
Firebird: http://firebirdsql.org
Interbase: http://www.interbase.com
kinterbasdb: http://kinterbasdb.sourceforge.net

Firebird --> pyfirebirdsql
Firebird: http://firebirdsql.org
pyfirebirdsql: http://github.com/nakagami/pyfirebirdsql/
pypi: http://pypi.python.org/pypi/firebirdsql/

ZODB (Zope Object Database) --> Python
ZODB: http://www.zope.org/Wikis/ZODB/FrontPage

MySQL --> mysql-python
MySQL: http://mysql.org/
mysql-python: http://sourceforge.net/projects/mysql-python/
mysql-python Website: http://mysql-python.sourceforge.net/
mysql-python DB-API-Users-Guide: http://mysql-python.sourceforge.net/MyS ... ml#mysqldb
mysql-python Präsentation: http://dustman.net/andy/python/python-and-mysql
Troubleshooting: [wiki]MySQLdb troubleshooting[/wiki]
mysql-python Windows Binaries: http://www.codegood.com/archives/4

MySQL --> oursql
MySQL: http://mysql.org/
oursql Launchpad: https://launchpad.net/oursql
oursql PyPi: http://pypi.python.org/pypi/oursql/
oursql Documentation: http://packages.python.org/oursql/

Gadfly --> Python
Gadfly: http://gadfly.sourceforge.net/gadfly.html

KirbyBase --> Python
KirbyBase: http://www.netpromi.com/kirbybase_python.html

Metakit --> Mk4py (Metakit for Python)
Metakit: http://www.equi4.com/metakit.html
Mk4py: http://www.equi4.com/metakit/python.html

PyTables --> Python
PyTables: http://www.pytables.org/

Verschiedenste Datenbanken --> ADOdb for Python
ADOdb for Python: http://phplens.com/lens/adodb/adodb-py-docs.htm

Verschiedenste Datenbanken --> Python DB-API 2.0 module for ADO
adodbapi: http://adodbapi.sourceforge.net/

ODBC (unixODBC API) --> PyODB
PyODB: http://sourceforge.net/projects/pyodb/

ODBC (Windows und Linux) --> pyodbc
pyodbc: http://code.google.com/p/pyodbc (ehemals: http://pyodbc.sourceforge.net/)
Beispiel mit Access als DB: http://www.python-forum.de/topic-12658.html

ODBC (Windows und Linux) --> ceODBC
ceODBC: http://ceodbc.sourceforge.net/

Oracle --> cx_Oracle
Oracle: http://www.oracle.com/lang/de/database/index.html
cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/

Durus --> Python
Durus: http://www.mems-exchange.org/software/durus/

SnakeSQL --> Python
SnakeSQL: http://www.pythonweb.org/projects/snakesql/index.html

IBM Informix --> InformixDB:
IBM Informix: http://www-306.ibm.com/software/data/informix/
InformixDB: http://informixdb.sourceforge.net/

IBM DB --> Python driver and DBI:
Python driver and DBI: http://pypi.python.org/pypi/ibm_db/

PyDbLite --> Python
PyDbLite: http://quentel.pierre.free.fr/PyDbLite/index.html

Schevo --> Python
Schevo: http://cheeseshop.python.org/pypi/Schevo

dbf (dBase, Foxpro, Clipper, ...) --> dbfpy
dbfpy: http://dbfpy.sourceforge.net/

Buzhug --> Python
Buzhug: http://buzhug.sourceforge.net/

CouchDB --> Json
CouchDB: http://couchdb.com/
Python library: http://pypi.python.org/pypi/CouchDB

Sybase --> python-sybase:
Sybase module for Python: http://python-sybase.sourceforge.net/

Filemaker --> fmkr.py:
Filemaker: http://www.filemaker.com/
Filemaker Modul für Python: http://www.lfd.uci.edu/~gohlke/code/fmkr.py.html

Filemaker --> PyFileMaker:
Filemaker: http://www.filemaker.com/
PyFileMaker: http://code.google.com/p/pyfilemaker/

Mongo --> pymongo
Mongo: http://www.mongodb.org/ (=document-oriented data store)
pymongo: http://github.com/mongodb/mongo-python-driver/
pymongo (pypi): http://pypi.python.org/pypi/pymongo/

pod --> Python
Pickled Object Database ("pod"): http://code.google.com/p/pickled-object-database/

dobbin --> Python
Pure-Python object database
PyPi: http://pypi.python.org/pypi/dobbin/

HBase --> PyHBase:
HBase: http://hbase.apache.org/
PyHBase: http://pypi.python.org/pypi/PyHBase/

ODBC (Windows, Linux, Mac OS, FreeBSD) --> mxODBC
mxODBC: http://www.egenix.com/products/python/mxODBC/

ODBC (Windows, Linux, Mac OS, FreeBSD) --> mxODBC Connect
mxODBC Connect: http://www.egenix.com/products/python/mxODBCConnect/
(Client-Server Version von mxODBC, nutzt die ODBC Treiber auf der Server Seite)

Redis --> redis-py
Redis: http://redis.io/ (Key-Value Store - sauschnell und super einfach)
redis-py: https://github.com/andymccurdy/redis-py
redis-py (pypi): http://pypi.python.org/pypi/redis/


Python Database Modules zu finden bei python.org: http://wiki.python.org/moin/DatabaseProgramming



Wenn du Vorschläge oder Änderungswünsche hast, dann schick mir eine PN. Ich werde mich darum kümmern.


lg
Gerold
:-)
Zuletzt geändert von gerold am Mittwoch 10. Februar 2010, 17:50, insgesamt 45-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hey Super Gerold!! :)

Ich wusste gar nicht dass soviel DBs von Python unterstützt werden.
Hmm das wäre ja mal ne Idee eine CoreDB zu schreiben das mit alle oben gelisteten DBs klar kommt :D

lg
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Vielleicht sollte man noch SQLAlchemy erwaehnen, ist ziemlich cool...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

maxip hat geschrieben:Vielleicht sollte man noch SQLAlchemy erwaehnen, ist ziemlich cool...
Das ist ja was ganz anderes und setzt auf die hier beschriebenen Datenbankschnittstellen auf. Da müsste man eher eine Liste von ORM-Libraries anlegen, wo dann Storm, Django & Co. auch drin wären.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Wieso gibt es denn sieben (!) Bindings für Postgre? Welches davon nutzt man jetzt eigentlich?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Welches davon nutzt man jetzt eigentlich?
psycopg. Ich kenne kein nennenswertes Projekt dass etwas anderes nutzt. Django und SQLAlchemy nutzen beide das.

pg8000 ist ja eben genau deswegen so benannt worden: """pg8000's name comes from the belief that it is probably about the 8000th PostgreSQL interface for Python."""
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
proofy
User
Beiträge: 32
Registriert: Montag 21. März 2011, 12:47

Gibt es noch mehr, ggf. eingebaute Abstraktionsmodule für Datenbanken ähnlich wie ADOdb?
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Nachtrag für Firebird:

pyfirebirdsql

Ist eine Neuentwicklung, die ursprünglich für python 3.x entstanden ist. Allerdings kam sehr schnell die Nachfrage nach einem Backport für python 2.7x, welches jetzt auch unterstützt wird.
pyfirebirdsql setzt auf die xdrlib auf, im Gegensatz zu der "alten" Schnittstelle kinterbasdb, welche eine in python eingewickelte C-Library ist.
I'm not getting paid for being Mr. Nice Guy!
mpathy
User
Beiträge: 48
Registriert: Montag 17. September 2007, 12:29

proofy hat geschrieben:Gibt es noch mehr, ggf. eingebaute Abstraktionsmodule für Datenbanken ähnlich wie ADOdb?
Ja, aber das ist ja nicht das Thema dieses Threads, siehe Antwort von Leonidas.

An sich wäre aber das populärste natürlich SQLalchemy.
Unter ferner liefen dann noch Storm, SQLobject, Autumn.

Das wars an sich.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Außerdem gibt es noch peewee (erster Commit auf Github in Okt. 2010, aktuelle Version 0.9.0), das vor allem auf Einfachheit setzt.
Rigoletto
User
Beiträge: 28
Registriert: Freitag 14. Februar 2014, 21:05

Den nehme ich als ODBC, PURE PYTHON:
https://code.google.com/p/pypyodbc/
Benutzeravatar
pixewakb
User
Beiträge: 1405
Registriert: Sonntag 24. April 2011, 19:43

Ich habe nicht alles geprüft, aber bei:
SQLite --> pySQLite
SQLite: http://www.sqlite.org/
pySQLite: http://initd.org/tracker/pysqlite
pySQLite-Modul (ab Python 2.5): http://docs.python.org/lib/module-sqlite3.html
Usage Guide: http://initd.org/pub/software/pysqlite/ ... guide.html
Ist der Link bei Usage Guide nicht mehr zugänglich, d. h. "404 not found".

Und der Link bei PyTables führt auch ins Nirvana (URL: http://www.pytables.org/moin/PyTables).
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

pixewakb hat geschrieben:Ich habe nicht alles geprüft, aber bei:[...]Ist der Link bei Usage Guide nicht mehr zugänglich,
Hallo pixewakb!

Danke fürs Durchsehen. So wie es aussieht, kann ich den Beitrag nicht mehr ändern. Muss jemand mit mehr Rechten im Forum machen.

lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Ich habe die beiden Punkte mal angepasst. Für sowas wäre ein Wiki ja praktisch. :-)
Benutzeravatar
pixewakb
User
Beiträge: 1405
Registriert: Sonntag 24. April 2011, 19:43

https://wiki.python.org/moin/

Kann man sicherlich drüber streiten, aber die Inhalte wären dann an einem Ort, der wahrscheinlich auch länger existiert und verlinkt werden könnte, und gegen dezidiert deutschsprachige Seiten scheint dort auch niemand etwas zu haben. Das dortige Wiki scheint wenig Inhalte und wenig aktive Benutzer zu haben - wäre m. E. ein Argument die dortige Nutzer-Basis zu verbreitern.

Einschlägig: https://wiki.python.org/moin/DatabaseProgramming

Und vor allem: https://wiki.python.org/moin/DatabaseInterfaces

Da könnte man sich mit https://wiki.python.org/moin/Datenbank-Programmierung "dranhängen"
Benutzeravatar
Ant-on-Hu
User
Beiträge: 17
Registriert: Sonntag 18. Juni 2017, 16:21

Hallo!
Was haltet ihr von TinyDB als NoSQL-Datenbank (http://tinydb.readthedocs.io/en/latest/index.html)? Scheint recht einfach zu sein und man braucht keinen Server wie z.B. bei MongoDB. Sollte sich dann am Schluss auch in eine ausführbare .exe-Datei pressen lassen. Die Daten werden im json-Format gespeichert.

LG. Anton
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wenn man ernsthaft dir Vor- und Nachteile von TinyDB und Mongo vergleicht hat man die Kontrolle über die verwendeten Datenbanken verloren. Wenn man sich den "Why Not use TinyDB?" Teil der Doku anschaut wird ziemlich deutlich dass TinyDB nur als SQLite Alternative taugt, in Situationen wo man wenige Daten hat.

TinyDB ist also letztendlich nichts anderes als "Ich speicher alles in einer riesigen database.json" in nett umgesetzt.
Benutzeravatar
Ant-on-Hu
User
Beiträge: 17
Registriert: Sonntag 18. Juni 2017, 16:21

Für eine kleine Mitgliederverwaltung brauche ich ja nichts schnelles, da tut's TinyDB vermutlich. Und wenn ich am Schluss eine .exe-Datei habe, die ich leicht an den Vorstand weitergeben kann, dann ist das schon ein Vorteil. Ich habs selbst noch nicht probiert, aber es sieht recht einfach aus. Bei sqlite muss ich halt vorher schon alle Felder wissen, die je in dem Verein gebraucht werden. Bei TinyDB kann ich einfach das Formular erweitern und zusätzliche Felder abspeichern.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Bei SQLite könntest du auch eine DB Migration ausführen sobald die Anwendung startet. Sobald du eine Gewisse Komplexität erreichst kommst du um sowas auch bei einer NoSQL Datenbank nicht herum.
Benutzeravatar
Ant-on-Hu
User
Beiträge: 17
Registriert: Sonntag 18. Juni 2017, 16:21

Ich denk nochmal drüber nach. sqlite könnte man ja auch ohne joins verwenden und dann einfach immer neue Spalten hinzufügen.
Antworten