Exemplo n.º 1
0
 def select(cls, query=None):
     select_query = SelectQuery(cls, query)
     if cls._meta.ordering:
         select_query = select_query.order_by(*cls._meta.ordering)
     return select_query
Exemplo n.º 2
0
    def test_select(self):
        sq = SelectQuery(Blog, '*')
        logging.info(sq.sql())
        self.assertSQLEqual(sq.sql(), ('SELECT `id`, `title` FROM `blog`', []))

        sq = SelectQuery(Blog, '*').where(title='a')
        logging.info(sq.sql())
        self.assertSQLEqual(sq.sql(), ('SELECT `id`, `title` FROM `blog` WHERE `title` = ?', ['a']))
        sq2 = SelectQuery(Blog, '*').where(Blog.title == 'a')
        logging.info(sq.sql())
        self.assertEqual(sq.sql(), sq2.sql())

        sq = SelectQuery(Blog, '*').where(title='a', id=1)
        logging.info(sq.sql())
        self.assertSQLEqual(sq.sql(), ('SELECT `id`, `title` FROM `blog` WHERE (`id` = ? AND `title` = ?)', [1, 'a']))
        sq2 = SelectQuery(Blog, '*').where((Blog.id == 1) & (Blog.title == 'a'))
        logging.info(sq.sql())
        self.assertEqual(sq.sql(), sq2.sql())

        # check that chaining works as expected
        sq = SelectQuery(Blog, '*').where(title='a').where(id=1)
        logging.info(sq.sql())
        self.assertSQLEqual(sq.sql(), ('SELECT `id`, `title` FROM `blog` WHERE `title` = ? AND `id` = ?', ['a', 1]))
        sq2 = SelectQuery(Blog, '*').where(Blog.title == 'a').where(Blog.id == 1)
        logging.info(sq.sql())
        self.assertEqual(sq.sql(), sq2.sql())

        # check that IN query special-case works
        sq = SelectQuery(Blog, '*').where(title__in=['a', 'b'])
        logging.info(sq.sql())
        self.assertSQLEqual(sq.sql(), ('SELECT `id`, `title` FROM `blog` WHERE `title` IN (?,?)', ['a', 'b']))
        sq2 = SelectQuery(Blog, '*').where(Blog.title << ['a', 'b'])
        logging.info(sq.sql())
        self.assertEqual(sq.sql(), sq2.sql())