I wrote a minimal database dialect for SQLAlchemy that doesn't really belong in the core. How do I make it work as its own Python package?
When SQLAlchemy resolves a database url example://... it will first try to find it in import sqlalchemy.dialects.example. If that doesn't work it falls back to pkg_resources.iter_entry_points('sqlachemy.dialects').
Put the new dialect in a package using setuptools, include an entry point named after your dialect, run python setup.py develop or python setup.py install, and SQLAlchemy should be able to find the dialect.
In setup.py:
entry_points="""
[sqlalchemy.dialects]
example = example_sa:base.dialect
"""
example_sa:base.dialect means import example_sa; return base.dialect.
After installing this package, pkg_resources.iter_entry_points(group) yields pkg_resources.EntryPoint instances from group. Call .load() on the EntryPoint with entrypoint.name='example' and you get example_sa.base.dialect.
I was pleasantly suprised at how easy it is to write new dialects for SQLAlchemy 0.6. If your database has just a few quirks compared to standard SQL, chances are you will be able to inherit from the standard (MySQL-like) SQL dialect, define your database's keywords, and copy the implementation of those quirks (like SELECT TOP 10 instead of SELECT ... LIMIT 10) from an existing dialect.