87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
import sqlalchemy as sa
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
|
|
from sqlalchemy_utils import (
|
|
escape_like,
|
|
sort_query,
|
|
InstrumentedList,
|
|
PhoneNumber,
|
|
PhoneNumberType,
|
|
merge
|
|
)
|
|
|
|
|
|
class TestCase(object):
|
|
def setup_method(self, method):
|
|
self.engine = create_engine(
|
|
'postgres://postgres@localhost/sqlalchemy_utils_test'
|
|
)
|
|
self.Base = declarative_base()
|
|
|
|
self.create_models()
|
|
self.Base.metadata.create_all(self.engine)
|
|
|
|
Session = sessionmaker(bind=self.engine)
|
|
self.session = Session()
|
|
|
|
def teardown_method(self, method):
|
|
self.session.close_all()
|
|
self.Base.metadata.drop_all(self.engine)
|
|
self.engine.dispose()
|
|
|
|
def create_models(self):
|
|
class User(self.Base):
|
|
__tablename__ = 'user'
|
|
id = sa.Column(sa.Integer, autoincrement=True, primary_key=True)
|
|
name = sa.Column(sa.Unicode(255))
|
|
phone_number = sa.Column(PhoneNumberType())
|
|
|
|
class Category(self.Base):
|
|
__tablename__ = 'category'
|
|
id = sa.Column(sa.Integer, primary_key=True)
|
|
name = sa.Column(sa.Unicode(255))
|
|
|
|
class Article(self.Base):
|
|
__tablename__ = 'article'
|
|
id = sa.Column(sa.Integer, primary_key=True)
|
|
name = sa.Column(sa.Unicode(255))
|
|
category_id = sa.Column(sa.Integer, sa.ForeignKey(Category.id))
|
|
|
|
category = sa.orm.relationship(
|
|
Category,
|
|
primaryjoin=category_id == Category.id,
|
|
backref=sa.orm.backref(
|
|
'articles',
|
|
collection_class=InstrumentedList
|
|
)
|
|
)
|
|
|
|
self.User = User
|
|
self.Category = Category
|
|
self.Article = Article
|
|
|
|
|
|
class DatabaseTestCase(object):
|
|
def create_models(self):
|
|
pass
|
|
|
|
def setup_method(self, method):
|
|
self.engine = create_engine(
|
|
'sqlite:///'
|
|
)
|
|
#self.engine.echo = True
|
|
self.Base = declarative_base()
|
|
|
|
self.create_models()
|
|
self.Base.metadata.create_all(self.engine)
|
|
Session = sessionmaker(bind=self.engine)
|
|
self.session = Session()
|
|
|
|
def teardown_method(self, method):
|
|
self.engine.dispose()
|
|
self.Base.metadata.drop_all(self.engine)
|
|
self.session.expunge_all()
|