Adopt banal for utility functions
This commit is contained in:
parent
8dede2b757
commit
37c0f87d10
@ -47,7 +47,8 @@ class Database(object):
|
|||||||
|
|
||||||
self.schema = schema
|
self.schema = schema
|
||||||
self.engine = create_engine(url, **engine_kwargs)
|
self.engine = create_engine(url, **engine_kwargs)
|
||||||
self.types = Types(self.engine.dialect.name)
|
self.is_postgres = self.engine.dialect.name == 'postgresql'
|
||||||
|
self.types = Types(is_postgres=self.is_postgres)
|
||||||
self.url = url
|
self.url = url
|
||||||
self.row_type = row_type
|
self.row_type = row_type
|
||||||
self.ensure_schema = ensure_schema
|
self.ensure_schema = ensure_schema
|
||||||
|
|||||||
@ -1,16 +1,17 @@
|
|||||||
import logging
|
import logging
|
||||||
import warnings
|
import warnings
|
||||||
import threading
|
import threading
|
||||||
|
from banal import ensure_list
|
||||||
|
|
||||||
|
from sqlalchemy import func, select, false
|
||||||
from sqlalchemy.sql import and_, expression
|
from sqlalchemy.sql import and_, expression
|
||||||
from sqlalchemy.sql.expression import bindparam, ClauseElement
|
from sqlalchemy.sql.expression import bindparam, ClauseElement
|
||||||
from sqlalchemy.schema import Column, Index
|
from sqlalchemy.schema import Column, Index
|
||||||
from sqlalchemy import func, select, false
|
|
||||||
from sqlalchemy.schema import Table as SQLATable
|
from sqlalchemy.schema import Table as SQLATable
|
||||||
from sqlalchemy.exc import NoSuchTableError
|
from sqlalchemy.exc import NoSuchTableError
|
||||||
|
|
||||||
from dataset.types import Types
|
from dataset.types import Types
|
||||||
from dataset.util import index_name, ensure_tuple
|
from dataset.util import index_name
|
||||||
from dataset.util import DatasetException, ResultIter, QUERY_STEP
|
from dataset.util import DatasetException, ResultIter, QUERY_STEP
|
||||||
from dataset.util import normalize_table_name, pad_chunk_columns
|
from dataset.util import normalize_table_name, pad_chunk_columns
|
||||||
from dataset.util import normalize_column_name, normalize_column_key
|
from dataset.util import normalize_column_name, normalize_column_key
|
||||||
@ -216,8 +217,7 @@ class Table(object):
|
|||||||
See :py:meth:`update() <dataset.Table.update>` for details on
|
See :py:meth:`update() <dataset.Table.update>` for details on
|
||||||
the other parameters.
|
the other parameters.
|
||||||
"""
|
"""
|
||||||
# Convert keys to a list if not a list or tuple.
|
keys = ensure_list(keys)
|
||||||
keys = keys if type(keys) in (list, tuple) else [keys]
|
|
||||||
|
|
||||||
chunk = []
|
chunk = []
|
||||||
columns = []
|
columns = []
|
||||||
@ -270,8 +270,7 @@ class Table(object):
|
|||||||
See :py:meth:`upsert() <dataset.Table.upsert>` and
|
See :py:meth:`upsert() <dataset.Table.upsert>` and
|
||||||
:py:meth:`insert_many() <dataset.Table.insert_many>`.
|
:py:meth:`insert_many() <dataset.Table.insert_many>`.
|
||||||
"""
|
"""
|
||||||
# Convert keys to a list if not a list or tuple.
|
keys = ensure_list(keys)
|
||||||
keys = keys if type(keys) in (list, tuple) else [keys]
|
|
||||||
|
|
||||||
to_insert = []
|
to_insert = []
|
||||||
to_update = []
|
to_update = []
|
||||||
@ -442,7 +441,7 @@ class Table(object):
|
|||||||
|
|
||||||
def _args_to_order_by(self, order_by):
|
def _args_to_order_by(self, order_by):
|
||||||
orderings = []
|
orderings = []
|
||||||
for ordering in ensure_tuple(order_by):
|
for ordering in ensure_list(order_by):
|
||||||
if ordering is None:
|
if ordering is None:
|
||||||
continue
|
continue
|
||||||
column = ordering.lstrip('-')
|
column = ordering.lstrip('-')
|
||||||
@ -456,8 +455,7 @@ class Table(object):
|
|||||||
return orderings
|
return orderings
|
||||||
|
|
||||||
def _keys_to_args(self, row, keys):
|
def _keys_to_args(self, row, keys):
|
||||||
keys = ensure_tuple(keys)
|
keys = [self._get_column_name(k) for k in ensure_list(keys)]
|
||||||
keys = [self._get_column_name(k) for k in keys]
|
|
||||||
row = row.copy()
|
row = row.copy()
|
||||||
args = {k: row.pop(k, None) for k in keys}
|
args = {k: row.pop(k, None) for k in keys}
|
||||||
return args, row
|
return args, row
|
||||||
@ -557,7 +555,7 @@ class Table(object):
|
|||||||
|
|
||||||
table.create_index(['name', 'country'])
|
table.create_index(['name', 'country'])
|
||||||
"""
|
"""
|
||||||
columns = [self._get_column_name(c) for c in ensure_tuple(columns)]
|
columns = [self._get_column_name(c) for c in ensure_list(columns)]
|
||||||
with self.db.lock:
|
with self.db.lock:
|
||||||
if not self.exists:
|
if not self.exists:
|
||||||
raise DatasetException("Table has not been created yet.")
|
raise DatasetException("Table has not been created yet.")
|
||||||
|
|||||||
@ -17,14 +17,8 @@ class Types(object):
|
|||||||
date = Date
|
date = Date
|
||||||
datetime = DateTime
|
datetime = DateTime
|
||||||
|
|
||||||
def __init__(self, dialect=None):
|
def __init__(self, is_postgres=None):
|
||||||
self._dialect = dialect
|
self.json = JSONB if is_postgres else JSON
|
||||||
|
|
||||||
@property
|
|
||||||
def json(self):
|
|
||||||
if self._dialect is not None and self._dialect == 'postgresql':
|
|
||||||
return JSONB
|
|
||||||
return JSON
|
|
||||||
|
|
||||||
def guess(self, sample):
|
def guess(self, sample):
|
||||||
"""Given a single sample, guess the column type for the field.
|
"""Given a single sample, guess the column type for the field.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user