Source code for sqlobject.tests.test_NoneValuedResultItem

# Test that selectResults handle NULL values from, for example, outer joins.

from sqlobject import ForeignKey, SQLObject, StringCol, sqlbuilder
from sqlobject.tests.dbtest import setupClass


[docs]class SOTestComposer(SQLObject): name = StringCol()
[docs]class SOTestWork(SQLObject): class sqlmeta: idName = "work_id" composer = ForeignKey('SOTestComposer') title = StringCol()
[docs]def test1(): setupClass([SOTestComposer, SOTestWork]) c = SOTestComposer(name='Mahler, Gustav') w = SOTestWork(composer=c, title='Symphony No. 9') SOTestComposer(name='Bruckner, Anton') # but don't add any works for Bruckner # do a left join, a common use case that often involves NULL results s = SOTestWork.select( join=sqlbuilder.LEFTJOINOn( SOTestComposer, SOTestWork, SOTestComposer.q.id == SOTestWork.q.composerID)) assert tuple(s) == (w, None)