Rename reflectMetadata to reflect_metadata, remove SQLite datetime fix.
This commit is contained in:
parent
d3473fc4a6
commit
01f85c11b9
@ -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)
|
||||
|
||||
@ -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 = {}
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user