Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close

SQLAlchemy

The Python SQL Toolkit and Object Relational Mapper

Requirements

SQLAlchemy requires Python 2.4 or higher. One or more DB-API implementations are also required for database access. See docs/intro.html for more information on supported DB-API implementations.

Python 3 Compatibility

Please see README.py3k for Python 3 installation and testing instructions.

Installation Tools

Installation is supported with standard Python distutils, as well as with setuptools or Distribute. Distribute is recommended. Distribute can be installed using the provided "distribute_setup.py" script. The original setuptools may be installed using the "ez_setup.py" script if preferred, or simply do nothing and distutils will be used.

Installing

To install:

python setup.py install

To use without installation, include the lib directory in your Python path.

Installing the C extension

If installing with Setuptools or Distribute, the C extensions are built and installed using the --with-cextensions flag:

python setup.py --with-cextensions install

If using plain Distutils, change the BUILD_CEXTENSIONS flag in setup.py to "True".

Running Tests

Please see README.unittests for full instructions on running unit tests.

Package Contents

doc/
HTML documentation, including tutorials and API reference. Point a browser to the "index.html" to start.
examples/
Fully commented and executable implementations for a variety of tasks.
lib/
SQLAlchemy.
test/
Unit tests for SQLAlchemy.

Help

Mailing lists, wiki, and more are available on-line at http://www.sqlalchemy.org.

License

SQLAlchemy is distributed under the MIT license.

Recent activity

Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

9657983 - - Updated the association, association proxy examples to use declarative, added a new example dict_of_sets_with_default.py, a "pushing the envelope" example of association proxy.
Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

9e7714a - - Changed the underlying approach to query.count(). query.count() is now in all cases exactly: query. from_self(func.count(literal_column('1'))). scalar() That is, "select count(1) from (<full query>)". This ...
Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

762548f - - A tweak to the unit of work causes it to order the flush along relationship() dependencies even if the given objects don't have any ...
Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

3861c78 - - Tightened the iterate vs. remove mutex around the identity map iteration, attempting to reduce the chance of an (extremely rare) reentrant gc operation causing ...
Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

fe221a6 - - some changes to the identity map regarding rare weakref callbacks during iterations. The mutex has been removed as it apparently can cause a reentrant ...
Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

3efd245 - - Added a fully descriptive error message for the case where Column is subclassed and _make_proxy() fails to make a copy due to TypeError on ...
Mike Bayer

Commits by Mike Bayer were pushed to dougtabuchi/sa06

40a7717 - - establish an "insert" option for events to control ordering if needed (not needed yet tho) - render foreign key constraints in the order in ...
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.