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)