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
from datetime import datetime
from collections import defaultdict
from threading import RLock
from sqlalchemy import create_engine
from sqlalchemy import Integer, UnicodeText, Float, DateTime, Boolean
from sqlalchemy.schema import Table, MetaData, Column, Index
from sqlalchemy.sql import and_, expression
from migrate.versioning.util import construct_engine
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):
with lock: