Rename reflectMetadata to reflect_metadata, remove SQLite datetime fix.

This commit is contained in:
Friedrich Lindenberg 2015-05-21 16:48:28 +02:00
parent d3473fc4a6
commit 01f85c11b9
3 changed files with 30 additions and 32 deletions

View File

@ -8,11 +8,13 @@ from dataset.freeze.app import freeze
# shut up useless SA warning:
warnings.filterwarnings(
'ignore', 'Unicode type received non-unicode bind param value.')
warnings.filterwarnings(
'ignore', 'Skipping unsupported ALTER for creation of implicit constraint')
__all__ = ['Database', 'Table', 'freeze', 'connect']
def connect(url=None, schema=None, reflectMetadata=True, engine_kwargs=None,
def connect(url=None, schema=None, reflect_metadata=True, engine_kwargs=None,
reflect_views=True):
"""
Opens a new connection to a database.
@ -28,7 +30,6 @@ def connect(url=None, schema=None, reflectMetadata=True, engine_kwargs=None,
connection timeout`_.
::
db = dataset.connect('sqlite:///factbook.db')
.. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
@ -37,8 +38,5 @@ def connect(url=None, schema=None, reflectMetadata=True, engine_kwargs=None,
if url is None:
url = os.environ.get('DATABASE_URL', url)
if url.startswith("sqlite://"):
sqlite_datetime_fix()
return Database(url, schema=schema, reflectMetadata=reflectMetadata,
return Database(url, schema=schema, reflect_metadata=reflect_metadata,
engine_kwargs=engine_kwargs, reflect_views=reflect_views)

View File

@ -24,7 +24,7 @@ log = logging.getLogger(__name__)
class Database(object):
def __init__(self, url, schema=None, reflectMetadata=True,
def __init__(self, url, schema=None, reflect_metadata=True,
engine_kwargs=None, reflect_views=True):
if engine_kwargs is None:
engine_kwargs = {}
@ -49,7 +49,7 @@ class Database(object):
self.url = url
self.metadata = MetaData(schema=schema)
self.metadata.bind = self.engine
if reflectMetadata:
if reflect_metadata:
self.metadata.reflect(self.engine, views=reflect_views)
self._tables = {}

View File

@ -66,32 +66,32 @@ class ResultIter(object):
return self
def sqlite_datetime_fix():
class SQLiteDateTimeType(types.TypeDecorator):
impl = types.Integer
epoch = datetime(1970, 1, 1, 0, 0, 0)
# def sqlite_datetime_fix():
# class SQLiteDateTimeType(types.TypeDecorator):
# impl = types.Integer
# epoch = datetime(1970, 1, 1, 0, 0, 0)
def process_bind_param(self, value, dialect):
if value is None:
return None
if isinstance(value, datetime):
return value
return (value / 1000 - self.epoch).total_seconds()
# def process_bind_param(self, value, dialect):
# if value is None:
# return None
# if isinstance(value, datetime):
# return value
# return (value / 1000 - self.epoch).total_seconds()
def process_result_value(self, value, dialect):
if value is None:
return None
if isinstance(value, int):
return self.epoch + timedelta(seconds=value / 1000)
return value
# def process_result_value(self, value, dialect):
# if value is None:
# return None
# if isinstance(value, int):
# return self.epoch + timedelta(seconds=value / 1000)
# return value
def is_sqlite(inspector):
return inspector.engine.dialect.name == "sqlite"
# def is_sqlite(inspector):
# return inspector.engine.dialect.name == "sqlite"
def is_datetime(column_info):
return isinstance(column_info['type'], types.DateTime)
# def is_datetime(column_info):
# return isinstance(column_info['type'], types.DateTime)
@event.listens_for(Table, "column_reflect")
def setup_epoch(inspector, table, column_info):
if is_sqlite(inspector) and is_datetime(column_info):
column_info['type'] = SQLiteDateTimeType()
# @event.listens_for(Table, "column_reflect")
# def setup_epoch(inspector, table, column_info):
# if is_sqlite(inspector) and is_datetime(column_info):
# column_info['type'] = SQLiteDateTimeType()