Begin moving things into the objects.
This commit is contained in:
parent
6d15886989
commit
14e68f26ab
35
dataset/persistence/database.py
Normal file
35
dataset/persistence/database.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import logging
|
||||||
|
from threading import RLock
|
||||||
|
|
||||||
|
from sqlalchemy import create_engine
|
||||||
|
from migrate.versioning.util import construct_engine
|
||||||
|
from sqlalchemy.pool import NullPool
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Database(object):
|
||||||
|
|
||||||
|
def __init__(self, url):
|
||||||
|
kw = {}
|
||||||
|
if url.startswith('postgres'):
|
||||||
|
kw['poolclass'] = NullPool
|
||||||
|
engine = create_engine(url, **kw)
|
||||||
|
self.lock = RLock()
|
||||||
|
self.url = url
|
||||||
|
self.engine = construct_engine(engine)
|
||||||
|
self.metadata = MetaData()
|
||||||
|
self.metadata.bind = self.engine
|
||||||
|
self.tables = {}
|
||||||
|
self.indexes = {}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def connect(self, url):
|
||||||
|
return Database(url)
|
||||||
|
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return '<Database(%s)>' % self.url
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,32 +1,13 @@
|
|||||||
import logging
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from threading import RLock
|
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy import Integer, UnicodeText, Float, DateTime, Boolean
|
from sqlalchemy import Integer, UnicodeText, Float, DateTime, Boolean
|
||||||
from sqlalchemy.schema import Table, MetaData, Column, Index
|
from sqlalchemy.schema import Table, MetaData, Column, Index
|
||||||
from sqlalchemy.sql import and_, expression
|
from sqlalchemy.sql import and_, expression
|
||||||
from migrate.versioning.util import construct_engine
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
lock = RLock()
|
|
||||||
|
|
||||||
def connect(url):
|
|
||||||
""" Create an engine for the given database URL. """
|
|
||||||
kw = {}
|
|
||||||
if url.startswith('postgres'):
|
|
||||||
#kw['pool_size'] = 5
|
|
||||||
from sqlalchemy.pool import NullPool
|
|
||||||
kw['poolclass'] = NullPool
|
|
||||||
engine = create_engine(url, **kw)
|
|
||||||
engine = construct_engine(engine)
|
|
||||||
meta = MetaData()
|
|
||||||
meta.bind = engine
|
|
||||||
engine._metadata = meta
|
|
||||||
engine._tables = dict()
|
|
||||||
engine._indexes = dict()
|
|
||||||
return engine
|
|
||||||
|
|
||||||
def create_table(engine, table_name):
|
def create_table(engine, table_name):
|
||||||
with lock:
|
with lock:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user