API Reference

Many of these classes are missing methods from the SQLALchemy API. We encourage you to file bugs in those cases.

alchimia.wrap_engine(reactor, engine, create_worker=...)

This returns a alchimia.engine.TwistedEngine.

The main entry-point to alchimia. To be used like so:

from sqlalchemy import create_engine
from alchimia import wrap_engine
from twisted.internet import reactor

underlying_engine = create_engine("sqlite://")
twisted_engine = wrap_engine(reactor, engine)
  • reactor - the Twisted reactor to use with the created TwistedEngine.

  • engine - the underlying sqlalchemy.engine.Engine

  • create_worker - The object that will coordinate concurrent blocking

    work behind the scenes. The default implementation, if nothing is passed, is one which will use a threadpool where each Connection is tied to an individual thread.

    More precisely, this is a callable that is expected to return an object with 2 methods, do(work) (expected to call the 0-argument work callable in a thread), and quit(), expected to stop any future work from occurring. It may be useful to stub out the default threaded implementation for testing purposes.

class alchimia.engine.TwistedEngine

Mostly like sqlalchemy.engine.Engine except some of the methods return Deferreds.

__init__(pool, dialect, url, reactor=..., create_worker=...)

This constructor is invoked if TwistedEngine is created via create_engine(..., reactor=reactor, strategy=TWISTED_STRATEGY) rather than called directly. New applications should prefer alchimia.wrap_engine(). However, create_engine relays its keyword arguments, so the reactor and create_worker arguments have the same meaning as they do in alchimia.wrap_engine().

classmethod from_sqlalchemy_engine(reactor, engine, create_worker=...)

This is the implementation of alchimia.wrap_engine.

connect()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a TwistedConnection.

execute(*args, **kwargs)

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a TwistedResultProxy.

has_table(table_name, schema=None)

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with the result.

table_names(schema=None, connection=None)

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with the result.

class alchimia.engine.TwistedConnection

Mostly like sqlalchemy.engine.Connection except some of the methods return Deferreds.

execute(*args, **kwargs)

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a TwistedResultProxy.

close()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires when the connection has been closed.

closed

Like the SQLAlchemy attribute of the same name.

begin()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a TwistedTransaction.

begin_nested()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a TwistedTransaction.

in_transaction()

Like the SQLAlchemy method of the same name.

class alchimia.engine.TwistedTransaction

Mostly like sqlalchemy.engine.Transaction except some of the methods return Deferreds.

commit()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires when the transaction has been committed.

rollback()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires when the transaction has been rolled back.

closed()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires when the transaction has been closed.

class alchimia.engine.TwistedResultProxy

Mostly like sqlalchemy.engine.ResultProxy except some of the methods return Deferreds.

fetchone()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a row.

fetchall()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with a list of rows.

scalar()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with the scalar value.

first()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with the scalar value.

keys()

Like the SQLAlchemy method of the same name, except returns a Deferred which fires with the scalar value.

close()

Like the SQLAlchemy method of the same name, it releases the resources used and releases the underlying DB connection.

returns_rows

Like the SQLAlchemy attribute of the same name.

rowcount

Like the SQLAlchemy attribute of the same name.

inserted_primary_key

Like the SQLAlchemy attribute of the same name.