def testJoin(): j = orm.join(s.book | I | s.book_author) expected_repr = '''\ <Select [all joinset] SELECT book.code, book.title, book.score, book_author.code, book_author.author_id FROM book INNER JOIN book_author ON book_author.code=book.code>''' assert_equal(repr(j), expected_repr) scratch = core.ScratchDB('sqlite3:///:memory:', _util.createbook) with scratch: populate(scratch.conn)
with core.ScratchDB(uri, _util.createbook, autocommit=True) as scratch: manager = orm.Manager(scratch.conn) manager.insert(s.book('0002', 'book2', 1)) books = [s.book('0001', 'book1', 1), s.book('0002', 'book2', 1), s.book('0003', 'book3', 1)] try: s.book._insert.many(scratch.conn, books) except: pass yield check, manager ####################### books schema ########################## I, O, L, R = orm.joiners s.book.get_score = orm.join(sql.read(s.book) | I | s.score, 'one', as_=s.score) s.book.get_authors = orm.join( sql.read(s.book) | I | s.book_author | I | s.author, as_=s.author) s.author.get_books = orm.join( sql.read(s.author) | I | s.book_author | I | s.book, as_=s.book) s.score.get_books = orm.join(sql.read(s.score) | I | s.book, as_=s.book) def testQuery(): from sqlplain import sql templ = 'SELECT {} FROM book'.format(s.book._columns) assert_equal(str(sql.Query(templ, 'all', as_=s.book)), 'SELECT code, title, score FROM book')