made reflect metadata a flag (fixes #9)

This commit is contained in:
Gregor Aisch 2013-05-24 23:50:28 +02:00
parent 1a25fbcd77
commit 4f3f574d58
3 changed files with 12 additions and 8 deletions

View File

@ -7,16 +7,19 @@ from dataset.persistence.database import Database
from dataset.persistence.table import Table
from dataset.freeze.app import freeze
def connect(url):
__all__ = ['Database', 'Table', 'freeze', 'connect']
def connect(url, reflectMetadata=True):
"""
Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_. Returns
an instance of :py:class:`Database <dataset.Database>`.
an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
don't want the entire database schema to be pre-loaded. This significantly speeds up
connecting to large databases with lots of tables.
::
db = dataset.connect('sqlite:///factbook.db')
.. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
"""
return Database(url)
return Database(url, reflectMetadata)

View File

@ -17,7 +17,7 @@ log = logging.getLogger(__name__)
class Database(object):
def __init__(self, url):
def __init__(self, url, reflectMetadata=True):
kw = {}
if url.startswith('postgres'):
kw['poolclass'] = NullPool
@ -27,6 +27,7 @@ class Database(object):
self.engine = construct_engine(engine)
self.metadata = MetaData()
self.metadata.bind = self.engine
if reflectMetadata:
self.metadata.reflect(self.engine)
self._tables = {}

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup(
name='dataset',
version='0.3.3',
version='0.3.4',
description="Toolkit for Python-based data processing.",
long_description="",
classifiers=[