From 4f3f574d5865e367a041f4de28a019a5ac354ec4 Mon Sep 17 00:00:00 2001 From: Gregor Aisch Date: Fri, 24 May 2013 23:50:28 +0200 Subject: [PATCH] made reflect metadata a flag (fixes #9) --- dataset/__init__.py | 13 ++++++++----- dataset/persistence/database.py | 5 +++-- setup.py | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/dataset/__init__.py b/dataset/__init__.py index 150e30c..b28eb49 100644 --- a/dataset/__init__.py +++ b/dataset/__init__.py @@ -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 `. + an instance of :py:class:`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) diff --git a/dataset/persistence/database.py b/dataset/persistence/database.py index 3536068..b81e1f4 100644 --- a/dataset/persistence/database.py +++ b/dataset/persistence/database.py @@ -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,7 +27,8 @@ class Database(object): self.engine = construct_engine(engine) self.metadata = MetaData() self.metadata.bind = self.engine - self.metadata.reflect(self.engine) + if reflectMetadata: + self.metadata.reflect(self.engine) self._tables = {} @property diff --git a/setup.py b/setup.py index e080d77..b385d2c 100644 --- a/setup.py +++ b/setup.py @@ -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=[