Source code for dbschema
"""dbschema main module."""
__version__ = '0.1.0-dev'
from . import backends
# TODO(andi) Do we really need this constants here? Maybe backends is
# a better place or alternatively backends should use them.
BACKEND_MYSQL = 'mysql' #: Identifier for MySQL databases.
BACKEND_POSTGRESQL = 'postgresql' #: Identifier for PostgreSQL databases.
BACKEND_SQLITE3 = 'sqlite3' #: Identifier for SQLite3 databases.
[docs]def open(backend, connection=None, log_sql=False, **connect_kwargs):
"""Returns a :class:`Schema` instance.
:param backend: Backend identifier, must be one of
:const:`dbschema.backends.BACKEND_NAMES`.
:param connection: If not ``None``, a already opened database
connection.
:type connection: DB-API2 connection or None
:param log_sql: If ``True`` SQL statements are logged (default: ``False``).
:param connect_kwargs: Connection kwargs if not connection is
given.
It is an error if both ``connection`` and ``connect_kwargs`` are
given.
:returns: A :class:`Schema` instance.
:raises: :exc:`dbschema.exceptions.DBSchemaError` if things went
wrong.
"""
db_cls = backends.get_backend(backend)
db = db_cls(backend, log_sql=log_sql)
db.set_connection(connection=connection, **connect_kwargs)
db._initialize()
return db