⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.py

📁 Python的一个ORM,现在很火
💻 PY
📖 第 1 页 / 共 5 页
字号:
    def test_find_order_desc(self, *args):        result = self.store.find(Foo).order_by(Desc(Foo.title))        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst, [                          (10, "Title 30"),                          (20, "Title 20"),                          (30, "Title 10"),                         ])    def test_find_default_order_asc(self):        class MyFoo(Foo):            __storm_order__ = "title"        result = self.store.find(MyFoo)        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst, [                          (30, "Title 10"),                          (20, "Title 20"),                          (10, "Title 30"),                         ])    def test_find_default_order_asc(self):        class MyFoo(Foo):            __storm_order__ = "-title"        result = self.store.find(MyFoo)        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst, [                          (10, "Title 30"),                          (20, "Title 20"),                          (30, "Title 10"),                         ])    def test_find_default_order_with_tuple(self):        class MyLink(Link):            __storm_order__ = ("foo_id", "-bar_id")        result = self.store.find(MyLink)        lst = [(link.foo_id, link.bar_id) for link in result]        self.assertEquals(lst, [                          (10, 300),                          (10, 200),                          (10, 100),                          (20, 200),                          (20, 100),                          (30, 300),                         ])    def test_find_default_order_with_tuple_and_expr(self):        class MyLink(Link):            __storm_order__ = ("foo_id", Desc(Link.bar_id))        result = self.store.find(MyLink)        lst = [(link.foo_id, link.bar_id) for link in result]        self.assertEquals(lst, [                          (10, 300),                          (10, 200),                          (10, 100),                          (20, 200),                          (20, 100),                          (30, 300),                         ])    def test_find_index(self):        foo = self.store.find(Foo).order_by(Foo.title)[0]        self.assertEquals(foo.id, 30)        self.assertEquals(foo.title, "Title 10")        foo = self.store.find(Foo).order_by(Foo.title)[1]        self.assertEquals(foo.id, 20)        self.assertEquals(foo.title, "Title 20")        foo = self.store.find(Foo).order_by(Foo.title)[2]        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")        foo = self.store.find(Foo).order_by(Foo.title)[1:][1]        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")        result = self.store.find(Foo).order_by(Foo.title)        self.assertRaises(IndexError, result.__getitem__, 3)    def test_find_slice(self):        result = self.store.find(Foo).order_by(Foo.title)[1:2]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                          [(20, "Title 20")])    def test_find_slice_offset(self):        result = self.store.find(Foo).order_by(Foo.title)[1:]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                           [(20, "Title 20"),                           (10, "Title 30")])    def test_find_slice_offset_any(self):        foo = self.store.find(Foo).order_by(Foo.title)[1:].any()        self.assertEquals(foo.id, 20)        self.assertEquals(foo.title, "Title 20")    def test_find_slice_offset_one(self):        foo = self.store.find(Foo).order_by(Foo.title)[1:2].one()        self.assertEquals(foo.id, 20)        self.assertEquals(foo.title, "Title 20")    def test_find_slice_offset_first(self):        foo = self.store.find(Foo).order_by(Foo.title)[1:].first()        self.assertEquals(foo.id, 20)        self.assertEquals(foo.title, "Title 20")    def test_find_slice_offset_last(self):        foo = self.store.find(Foo).order_by(Foo.title)[1:].last()        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")    def test_find_slice_limit(self):        result = self.store.find(Foo).order_by(Foo.title)[:2]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                           [(30, "Title 10"),                           (20, "Title 20")])    def test_find_slice_limit_last(self):        result = self.store.find(Foo).order_by(Foo.title)[:2]        self.assertRaises(FeatureError, result.last)    def test_find_slice_slice(self):        result = self.store.find(Foo).order_by(Foo.title)[0:2][1:3]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                          [(20, "Title 20")])        result = self.store.find(Foo).order_by(Foo.title)[:2][1:3]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                          [(20, "Title 20")])        result = self.store.find(Foo).order_by(Foo.title)[1:3][0:1]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                          [(20, "Title 20")])        result = self.store.find(Foo).order_by(Foo.title)[1:3][:1]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst,                          [(20, "Title 20")])        result = self.store.find(Foo).order_by(Foo.title)[5:5][1:1]        lst = [(foo.id, foo.title) for foo in result]        self.assertEquals(lst, [])    def test_find_slice_order_by(self):        result = self.store.find(Foo)[2:]        self.assertRaises(FeatureError, result.order_by, None)        result = self.store.find(Foo)[:2]        self.assertRaises(FeatureError, result.order_by, None)    def test_find_slice_remove(self):        result = self.store.find(Foo)[2:]        self.assertRaises(FeatureError, result.remove)        result = self.store.find(Foo)[:2]        self.assertRaises(FeatureError, result.remove)    def test_find_any(self, *args):        foo = self.store.find(Foo).order_by(Foo.title).any()        self.assertEquals(foo.id, 30)        self.assertEquals(foo.title, "Title 10")        foo = self.store.find(Foo).order_by(Foo.id).any()        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")        foo = self.store.find(Foo, id=40).any()        self.assertEquals(foo, None)    def test_find_first(self, *args):        self.assertRaises(UnorderedError, self.store.find(Foo).first)        foo = self.store.find(Foo).order_by(Foo.title).first()        self.assertEquals(foo.id, 30)        self.assertEquals(foo.title, "Title 10")        foo = self.store.find(Foo).order_by(Foo.id).first()        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")        foo = self.store.find(Foo, id=40).order_by(Foo.id).first()        self.assertEquals(foo, None)    def test_find_last(self, *args):        self.assertRaises(UnorderedError, self.store.find(Foo).last)        foo = self.store.find(Foo).order_by(Foo.title).last()        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")        foo = self.store.find(Foo).order_by(Foo.id).last()        self.assertEquals(foo.id, 30)        self.assertEquals(foo.title, "Title 10")        foo = self.store.find(Foo, id=40).order_by(Foo.id).last()        self.assertEquals(foo, None)    def test_find_last_desc(self, *args):        foo = self.store.find(Foo).order_by(Desc(Foo.title)).last()        self.assertEquals(foo.id, 30)        self.assertEquals(foo.title, "Title 10")        foo = self.store.find(Foo).order_by(Asc(Foo.id)).last()        self.assertEquals(foo.id, 30)        self.assertEquals(foo.title, "Title 10")    def test_find_one(self, *args):        self.assertRaises(NotOneError, self.store.find(Foo).one)        foo = self.store.find(Foo, id=10).one()        self.assertEquals(foo.id, 10)        self.assertEquals(foo.title, "Title 30")        foo = self.store.find(Foo, id=40).one()        self.assertEquals(foo, None)    def test_find_count(self):        self.assertEquals(self.store.find(Foo).count(), 3)    def test_find_count_column(self):        self.assertEquals(self.store.find(Link).count(Link.foo_id), 6)    def test_find_count_column_distinct(self):        count = self.store.find(Link).count(Link.foo_id, distinct=True)        self.assertEquals(count, 3)    def test_find_max(self):        self.assertEquals(self.store.find(Foo).max(Foo.id), 30)    def test_find_max_unicode(self):        title = self.store.find(Foo).max(Foo.title)        self.assertEquals(title, "Title 30")        self.assertTrue(isinstance(title, unicode))    def test_find_min(self):        self.assertEquals(self.store.find(Foo).min(Foo.id), 10)    def test_find_min_unicode(self):        title = self.store.find(Foo).min(Foo.title)        self.assertEquals(title, "Title 10")        self.assertTrue(isinstance(title, unicode))    def test_find_avg(self):        self.assertEquals(self.store.find(Foo).avg(Foo.id), 20)    def test_find_avg_float(self):        foo = Foo()        foo.id = 15        foo.title = u"Title 15"        self.store.add(foo)        self.assertEquals(self.store.find(Foo).avg(Foo.id), 18.75)    def test_find_sum(self):        self.assertEquals(self.store.find(Foo).sum(Foo.id), 60)    def test_find_max_order_by(self):        """Interaction between order by and aggregation shouldn't break."""        result = self.store.find(Foo)        self.assertEquals(result.order_by(Foo.id).max(Foo.id), 30)    def test_find_values(self):        values = self.store.find(Foo).order_by(Foo.id).values(Foo.id)        self.assertEquals(list(values), [10, 20, 30])        values = self.store.find(Foo).order_by(Foo.id).values(Foo.title)        values = list(values)        self.assertEquals(values, ["Title 30", "Title 20", "Title 10"])        self.assertEquals([type(value) for value in values],                          [unicode, unicode, unicode])    def test_find_multiple_values(self):        result = self.store.find(Foo).order_by(Foo.id)        values = result.values(Foo.id, Foo.title)        self.assertEquals(list(values),                          [(10, "Title 30"),                           (20, "Title 20"),                           (30, "Title 10")])    def test_find_values_with_no_arguments(self):        result = self.store.find(Foo).order_by(Foo.id)        self.assertRaises(FeatureError, result.values().next)    def test_find_slice_values(self):        values = self.store.find(Foo).order_by(Foo.id)[1:2].values(Foo.id)        self.assertEquals(list(values), [20])    def test_find_remove(self):        self.store.find(Foo, Foo.id == 20).remove()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (30, "Title 10"),                         ])    def test_find_cached(self):        foo = self.store.get(Foo, 20)        bar = self.store.get(Bar, 200)        self.assertTrue(foo)        self.assertTrue(bar)        self.assertEquals(self.store.find(Foo).cached(), [foo])    def test_find_cached_where(self):        foo1 = self.store.get(Foo, 10)        foo2 = self.store.get(Foo, 20)        bar = self.store.get(Bar, 200)        self.assertTrue(foo1)        self.assertTrue(foo2)        self.assertTrue(bar)        self.assertEquals(self.store.find(Foo, title=u"Title 20").cached(),                          [foo2])    def test_find_cached_invalidated(self):        foo = self.store.get(Foo, 20)        self.store.invalidate(foo)        self.assertEquals(self.store.find(Foo).cached(), [foo])    def test_find_cached_invalidated_and_deleted(self):        foo = self.store.get(Foo, 20)        self.store.execute("DELETE FROM foo WHERE id=20")        self.store.invalidate(foo)        # Do not look for the primary key (id), since it's able to get        # it without touching the database. Use the title instead.        self.assertEquals(self.store.find(Foo, title=u"Title 20").cached(), [])    def test_using_find_join(self):        bar = self.store.get(Bar, 100)        bar.foo_id = None        tables = self.store.using(Foo, LeftJoin(Bar, Bar.foo_id == Foo.id))        result = tables.find(Bar).order_by(Foo.id, Bar.id)        lst = [bar and (bar.id, bar.title) for bar in result]        self.assertEquals(lst, [                          None,                          (200, u"Title 200"),                          (300, u"Title 100"),                         ])    def test_using_find_with_strings(self):        foo = self.store.using("foo").find(Foo, id=10).one()        self.assertEquals(foo.title, "Title 30")        foo = self.store.using("foo", "bar").find(Foo, id=10).any()        self.assertEquals(foo.title, "Title 30")    def test_using_find_join_with_strings(self):        bar = self.store.get(Bar, 100)        bar.foo_id = None        tables = self.store.using(LeftJoin("foo", "bar",                                           "bar.foo_id = foo.id"))        result = tables.find(Bar).order_by(Foo.id, Bar.id)        lst = [bar and (bar.id, bar.title) for bar in result]        self.assertEquals(lst, [                          None,                          (200, u"Title 200"),                          (300, u"Title 100"),                         ])    def test_find_tuple(self):        bar = self.store.get(Bar, 200)        bar.foo_id = None        result = self.store.find((Foo, Bar), Bar.foo_id == Foo.id)        result = result.order_by(Foo.id)        lst = [(foo and (foo.id, foo.title), bar and (bar.id, bar.title))               for (foo, bar) in result]        self.assertEquals(lst, [                          ((10, u"Title 30"), (100, u"Title 300")),                          ((30, u"Title 10"), (300, u"Title 100")),                         ])    def test_find_tuple_using(self):        bar = self.store.get(Bar, 200)        bar.foo_id = None        tables = self.store.using(Foo, LeftJoin(Bar, Bar.foo_id == Foo.id))        result = tables.find((Foo, Bar)).order_by(Foo.id)        lst = [(foo and (foo.id, foo.title), bar and (bar.id, bar.title))               for (foo, bar) in result]        self.assertEquals(lst, [                          ((10, u"Title 30"), (100, u"Title 300")),                          ((20, u"Title 20"), None),                          ((30, u"Title 10"), (300, u"Title 100")),                         ])    def test_find_tuple_using_skip_when_none(self):        bar = self.store.get(Bar, 200)        bar.foo_id = None        tables = self.store.using(Foo,                                  LeftJoin(Bar, Bar.foo_id == Foo.id),                                  LeftJoin(Link, Link.bar_id == Bar.id))        result = tables.find((Bar, Link)).order_by(Foo.id, Bar.id, Link.foo_id)        lst = [(bar and (bar.id, bar.title),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -