Begin moving things into the objects.

This commit is contained in:
Friedrich Lindenberg 2013-04-01 17:30:52 +02:00
parent 6d15886989
commit 14e68f26ab
2 changed files with 35 additions and 19 deletions

View 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

View File

@ -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: