sqlachemy unittests with attribute_mapped_collection

10 views
Skip to first unread message

Gerhard Schmidt

unread,
Oct 7, 2017, 4:10:59 AM10/7/17
to pylons-...@googlegroups.com
Hi,

i'm starting a new project with pyramid and sqlalchemy. I have a slight
problem with testing the project when using attribute_mapped_collection
in a relationship

class Movie(Base):
__tablename__ = 'movies'
id = Column(Integer, primary_key=True)
uid = Column(String(30), nullable=False, unique=True)
fsk = Column(Integer)
length = Column(Integer)
language_id = Column(Integer,
ForeignKey(Language.id, ondelete="cascade"),
nullable=False)
language = relation(Language)
year = Column(Integer)
titles = relation('MovieTitle',
collection_class=attribute_mapped_collection('language_id'),
cascade="all, delete-orphan")

class MovieTitle(Base):
__tablename__ = 'movie_titles'
id = Column(Integer, primary_key=True)
movie_id = Column(Integer,
ForeignKey(Movie.id, ondelete="cascade"),
nullable=False)
movie = relation(Movie)
language_id = Column(Integer,
ForeignKey(Language.id, ondelete="cascade"),
nullable=False)
language = relation(Language)
title = Column(String(80), nullable=False)
headline = Column(String(80))
subtitle = Column(String(80))

for unittesting i create in setUp some entries for the movies and
movietitles tables.

for mi in testdata_movies:
mtis = mi.pop('titles', [])
movie = Movie(**mi)
self.session.add(movie)
self.session.flush()
for mti in mtis:
mt = MovieTitle(movie_id=movie.id, **mti)
self.session.add(mt)
self.session.flush()

testdata_movies = [
{
'id': 1,
'country_id': 1,
'language_id': 1,
'year': 2011,
'fsk': 12,
'length': 123,
'titles': [
{
'language_id': 1,
'title': 'Testfilm',
'subtitle': "testsubtitle",
}
]
}
]

Running this code generates the entry in movies table but no entry in
movietitles. what am i doing wrong.

Regards
Estartu

signature.asc
Reply all
Reply to author
Forward
0 new messages