Differences between revisions 8 and 93 (spanning 85 versions)
Revision 8 as of 2003-02-12 00:50:45
Size: 3268
Editor: MikeRovner
Comment:
Revision 93 as of 2008-11-15 13:59:57
Size: 3715
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
  ''This page seems to duplicate ChoosingDatabase, wouldn't it be better to merge shelve and the rest there? -- DanielDittmar [[DateTime(2003-02-11T23:15:22)]]'' <<TableOfContents>>
Line 3: Line 3:
  ''I don't think so. Now they surely have to be refactored both, but ChoosingDatabase seems to be a good page for one place for categorized comparision to narrow novice's choice while that is merely a catalog. -- MikeRovner [[DateTime]]'' The contents of this page are being merged into the ChoosingDatabase page.
Line 5: Line 5:
= Relational database =
Line 6: Line 7:
[[TableOfContents]]

= DBMS interfaces =
Things you connect to.

Take a look at
http://www.python.org/topics/database/modules.html and
http://dmoz.org/Computers/Programming/Languages/Python/Modules/Databases_and_Persistence/.
Databases based on a relational model, with support for SQL.
Line 16: Line 10:
 * mysqldb module http://www.mysql.com/downloads/api-python.html
 * SnakeDb (http://www.scriptfoundry.com/modules/snakedb/)
mysql-python: http://sourceforge.net/projects/mysql-python
Line 20: Line 13:
pypgsql (http://pypgsql.sf.net/)
 * psycopg
  * psycopg1: http://initd.org/projects/psycopg1
  * psycopg2: http://initd.org/projects/psycopg2

 * pyPgSQL: http://pypgsql.sourceforge.net/

 * PyGreSQL: http://www.pygresql.org/

 * PoPy: http://sourceforge.net/projects/popy
  * PoPy and PyGreSQL are [[http://www.zope.org/Members/tm/Full_Announce|merging]]

 * pg/python: http://python.projects.postgresql.org/
  * pg_proboscis: DB-API 2.0 and GreenTrunk Interfaces http://python.projects.postgresql.org/project/pg_proboscis.html
  * pg_pqueue: PQ 3.0 Protocol elements http://python.projects.postgresql.org/project/pg_pqueue.html

 * pgasync: http://jamwt.com/pgasync/
  * Asynchronous and pure Python. Speed comparable to C bindings. Special support for Twisted.

 * bpgsql: http://barryp.org/software/bpgsql/
  * Barebones pure-Python PostgreSQL client

 * [[sipPQ]]

 * mxODBC: http://www.egenix.com/products/python/mxODBC/
  * Supports the [[http://www.postgresql.org/ftp/odbc/versions/|PostgreSQL ODBC driver]] on both Windows and Unix.
Note that you have to enable the advanced option "Use bytea for lo" in case you want to work with BLOBs.
Line 23: Line 42:
 * dcOracle
 * cxOracle

 * cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/

 * DCOracle: http://www.zope.org/Products/DCOracle/
  * This is for old Oracle versions (7 and 8).

 * DCOracle2: http://www.zope.org/Members/matt/dco2
  * For Oracle 8i and up.

 * mxODBC: http://www.egenix.com/products/python/mxODBC/
  * Supports the [[http://www.oracle.com/technology/tech/oci/instantclient/index.html|Oracle Instant Client]] which is available for Windows and many popular Unix platforms.

== IBM DB2 ==

 * More info on [[DB2]]
Line 27: Line 59:
module developed by Dave Cole http://www.object-craft.com.au/projects/sybase/
Line 29: Line 60:
== MSSQL ==  * sybase
  * old: http://www.object-craft.com.au/projects/sybase/
  * new: http://python-sybase.sourceforge.net/
Line 31: Line 64:
== BerkeleyDb ==  * mxODBC: http://www.egenix.com/products/python/mxODBC/
  * Supports Sybase ASE and Sybase Anywhere.
Line 33: Line 67:
== MaxDB/SAPDB ==

 * sapdb: http://dev.mysql.com/doc/maxdb/interfaces.html

 * mxODBC: http://www.egenix.com/products/python/mxODBC/
  * MaxDB/SAPDB's native CLI is ODBC compatible and mxODBC can link directly against the CLI libs on Unix. It also supports the ODBC driver on Windows.

== Informix ==

 * InformixDB: http://informixdb.sourceforge.net/

 * mxODBC: http://www.egenix.com/products/python/mxODBC/
  * Note: The Informix ODBC drivers are included in the Informix CSDK.

== Ingres ==

 * ingresdbi: http://www.ingres.com

== Microsoft SQL Server ==

 * See [[SQL Server]]
Line 36: Line 91:
== gadfly ==
Gadfly is a simple relational database system implemented in Python based on the SQL Structured Query Language.
Currently use C-extension module for speed. Pure Python version included.
http://gadfly.sourceforge.net/
== buzhug ==
Line 41: Line 93:
== ZODB ==
http://www.zope.org/Wikis/ZODB Zope Object DB
[[http://buzhug.sourceforge.net/|buzhug]] is a pure-Python database engine, using a Pythonic, no-SQL syntax.
Line 44: Line 95:
== shelve ==
A [http://www.python.org/doc/current/lib/module-shelve.html ''shelf''] is a persistent, dictionary-like object. The difference with ''dbm'' databases is that the values (not the keys!) in a shelf can be essentially arbitrary Python objects -- anything that the [http://www.python.org/doc/current/lib/module-pickle.html pickle] module can handle. This includes most class instances, recursive data types, and objects containing lots of shared sub-objects. The keys are ordinary strings.
The data is stored and accessed on disk (it is not an in-memory database). The implementation has been designed to make all operations, and especially selection, as fast as possible with an interpreted language.
Line 47: Line 97:
A limited benchmark using the same use cases as SQLite's author shows that buzhug is much faster than other pure-Python modules (KirbyBase, gadfly). SQLite, which is implemented in C, is faster, but only less than 3 times on the average.
Line 48: Line 99:
= Datafiles interfaces =
Things you open.
== SnakeSQL ==
Line 51: Line 101:
== xBase ==
Which stands for .dbf files interface.[[BR]]
.bdf files were produced by several old systems like dBase(II,III,IV), Fox(Base,Pro)
 * xBase (http://linux.techass.com/projects/xdb/) - Python interface in plans
 * http://www.fiby.at/dbfpy.html
 * http://www.sequiter.com/products/Python/
 * http://cbbrowne.com/info/xbase.html
 * http://www.e-bachmann.dk/docs/xbase.htm

== dbm ==
A family of old unix plain hash tables. Has varieties like dbm, ndbm, gdbm, dbmdb185.[[BR]]
See [http://www.python.org/doc/current/lib/module-anydbm.html anydbm],
[http://www.python.org/doc/current/lib/module-dumbdbm.html dumbdbm],
[http://www.python.org/doc/current/lib/module-dbhash.html dbhash],
[http://www.python.org/doc/current/lib/module-bsddb.html bsddb],
[http://www.python.org/doc/current/lib/module-dbm.html dbm],
[http://www.python.org/doc/current/lib/module-gdbm.html gdbm]
in Python Standard Library.

== MetaKit ==
http://www.equi4.com/metakit/python.html

== SQLite ==
Actualy it's a full-fleged SQL server, but embeddable. No external SQL server required. Think of Gadfly, only faster.
http://PySQLite.sf.net

= Special file interface =

 * http://python-dsv.sourceforge.net/ CSV or any separated file (see also PEP:305)
 * ConfigParser.py - Windows .ini format
 * gzip.py
 * zipfile.py
 * tar
 * pdf http://www.pythonware.com/
[[http://www.pythonweb.org/projects/snakesql/|SnakeSQL]] is a pure Python SQL database written to remove the dependence of the Python Web Modules on 3rd party drivers for non-Python databases like MySQL but designed to be a useful database in its own right.

The contents of this page are being merged into the ChoosingDatabase page.

Relational database

Databases based on a relational model, with support for SQL.

MySQL

mysql-python: http://sourceforge.net/projects/mysql-python

PostgreSQL

Note that you have to enable the advanced option "Use bytea for lo" in case you want to work with BLOBs.

Oracle

IBM DB2

  • More info on DB2

Sybase

MaxDB/SAPDB

Informix

Ingres

Microsoft SQL Server

Native Python Databases

buzhug

buzhug is a pure-Python database engine, using a Pythonic, no-SQL syntax.

The data is stored and accessed on disk (it is not an in-memory database). The implementation has been designed to make all operations, and especially selection, as fast as possible with an interpreted language.

A limited benchmark using the same use cases as SQLite's author shows that buzhug is much faster than other pure-Python modules (KirbyBase, gadfly). SQLite, which is implemented in C, is faster, but only less than 3 times on the average.

SnakeSQL

SnakeSQL is a pure Python SQL database written to remove the dependence of the Python Web Modules on 3rd party drivers for non-Python databases like MySQL but designed to be a useful database in its own right.

DatabaseInterfaces (last edited 2020-12-09 09:29:13 by MarcAndreLemburg)

Unable to edit the page? See the FrontPage for instructions.