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

📄 base.py

📁 Python的一个ORM,现在很火
💻 PY
📖 第 1 页 / 共 5 页
字号:
        foo.id = 40        foo.id = 20        self.store.flush()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Title 20"),                          (30, "Title 10"),                         ])    def test_flush_with_removed_prop_really_dirty(self):        foo = self.store.get(Foo, 20)        del foo.title        foo.id = 25        self.store.flush()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (25, "Title 20"),                          (30, "Title 10"),                         ])    def test_reload(self):        foo = self.store.get(Foo, 20)        self.store.execute("UPDATE foo SET title='Title 40' WHERE id=20")        self.assertEquals(foo.title, "Title 20")        self.store.reload(foo)        self.assertEquals(foo.title, "Title 40")    def test_reload_not_changed(self):        foo = self.store.get(Foo, 20)        self.store.execute("UPDATE foo SET title='Title 40' WHERE id=20")        self.store.reload(foo)        for variable in get_obj_info(foo).variables.values():            self.assertFalse(variable.has_changed())    def test_reload_new(self):        foo = Foo()        foo.id = 40        foo.title = u"Title 40"        self.assertRaises(WrongStoreError, self.store.reload, foo)    def test_reload_new_unflushed(self):        foo = Foo()        foo.id = 40        foo.title = u"Title 40"        self.store.add(foo)        self.assertRaises(NotFlushedError, self.store.reload, foo)    def test_reload_removed(self):        foo = self.store.get(Foo, 20)        self.store.remove(foo)        self.store.flush()        self.assertRaises(WrongStoreError, self.store.reload, foo)    def test_reload_unknown(self):        foo = self.store.get(Foo, 20)        store = Store(self.database)        self.assertRaises(WrongStoreError, store.reload, foo)    def test_wb_reload_not_dirty(self):        foo = self.store.get(Foo, 20)        obj_info = get_obj_info(foo)        foo.title = u"Title 40"        self.store.reload(foo)        self.assertTrue(obj_info not in self.store._dirty)    def test_find_set_empty(self):        self.store.find(Foo, title=u"Title 20").set()        foo = self.store.get(Foo, 20)        self.assertEquals(foo.title, "Title 20")    def test_find_set(self):        self.store.find(Foo, title=u"Title 20").set(title=u"Title 40")        foo = self.store.get(Foo, 20)        self.assertEquals(foo.title, "Title 40")    def test_find_set_column(self):        self.store.find(Bar, title=u"Title 200").set(foo_id=Bar.id)        bar = self.store.get(Bar, 200)        self.assertEquals(bar.foo_id, 200)    def test_find_set_expr(self):        self.store.find(Foo, title=u"Title 20").set(Foo.title == u"Title 40")        foo = self.store.get(Foo, 20)        self.assertEquals(foo.title, "Title 40")    def test_find_set_none(self):        self.store.find(Foo, title=u"Title 20").set(title=None)        foo = self.store.get(Foo, 20)        self.assertEquals(foo.title, None)    def test_find_set_expr_column(self):        self.store.find(Bar, id=200).set(Bar.foo_id == Bar.id)        bar = self.store.get(Bar, 200)        self.assertEquals(bar.id, 200)        self.assertEquals(bar.foo_id, 200)    def test_find_set_on_cached(self):        foo1 = self.store.get(Foo, 20)        foo2 = self.store.get(Foo, 30)        self.store.find(Foo, id=20).set(id=40)        self.assertEquals(foo1.id, 40)        self.assertEquals(foo2.id, 30)    def test_find_set_expr_on_cached(self):        bar = self.store.get(Bar, 200)        self.store.find(Bar, id=200).set(Bar.foo_id == Bar.id)        self.assertEquals(bar.id, 200)        self.assertEquals(bar.foo_id, 200)    def test_find_set_none_on_cached(self):        foo = self.store.get(Foo, 20)        self.store.find(Foo, title=u"Title 20").set(title=None)        self.assertEquals(foo.title, None)    def test_find_set_on_cached_but_removed(self):        foo1 = self.store.get(Foo, 20)        foo2 = self.store.get(Foo, 30)        self.store.remove(foo1)        self.store.find(Foo, id=20).set(id=40)        self.assertEquals(foo1.id, 20)        self.assertEquals(foo2.id, 30)    def test_find_set_on_cached_unsupported_python_expr(self):        foo1 = self.store.get(Foo, 20)        foo2 = self.store.get(Foo, 30)        self.store.find(Foo, Foo.id == Select(SQL("20"))).set(title=u"Title 40")        self.assertEquals(foo1.title, "Title 40")        self.assertEquals(foo2.title, "Title 10")    def test_find_set_expr_unsupported(self):        result = self.store.find(Foo, title=u"Title 20")        self.assertRaises(FeatureError, result.set, Foo.title > u"Title 40")    def test_find_set_expr_unsupported_2(self):        result = self.store.find(Foo, title=u"Title 20")        self.assertRaises(FeatureError, result.set, Foo.title == Func("func"))    def test_find_set_expr_unsupported_autoreloads(self):        bar1 = self.store.get(Bar, 200)        bar2 = self.store.get(Bar, 300)        self.store.find(Bar, id=Select(SQL("200"))).set(title=u"Title 400")        bar1_vars = get_obj_info(bar1).variables        bar2_vars = get_obj_info(bar2).variables        self.assertEquals(bar1_vars[Bar.title].get_lazy(), AutoReload)        self.assertEquals(bar2_vars[Bar.title].get_lazy(), AutoReload)        self.assertEquals(bar1_vars[Bar.foo_id].get_lazy(), None)        self.assertEquals(bar2_vars[Bar.foo_id].get_lazy(), None)        self.assertEquals(bar1.title, "Title 400")        self.assertEquals(bar2.title, "Title 100")    def test_wb_find_set_checkpoints(self):        bar = self.store.get(Bar, 200)        self.store.find(Bar, id=200).set(title=u"Title 400")        self.store._connection.execute("UPDATE bar SET "                                       "title='Title 500' "                                       "WHERE id=200")        # When not checkpointing, this flush will set title again.        self.store.flush()        self.store.reload(bar)        self.assertEquals(bar.title, "Title 500")    def test_reference(self):        bar = self.store.get(Bar, 100)        self.assertTrue(bar.foo)        self.assertEquals(bar.foo.title, "Title 30")    def test_reference_break_on_local_diverged(self):        bar = self.store.get(Bar, 100)        self.assertTrue(bar.foo)        bar.foo_id = 40        self.assertEquals(bar.foo, None)    def test_reference_break_on_remote_diverged(self):        bar = self.store.get(Bar, 100)        bar.foo.id = 40        self.assertEquals(bar.foo, None)    def test_reference_break_on_local_diverged_by_lazy(self):        bar = self.store.get(Bar, 100)        self.assertEquals(bar.foo.id, 10)        bar.foo_id = SQL("20")        self.assertEquals(bar.foo.id, 20)    def test_reference_break_on_remote_diverged_by_lazy(self):        bar = self.store.get(Bar, 100)        self.assertEquals(bar.foo.id, 10)        bar.foo.id = SQL("40")        self.assertEquals(bar.foo, None)    def test_reference_on_non_primary_key(self):        self.store.execute("INSERT INTO bar VALUES (400, 40, 'Title 30')")        class MyBar(Bar):            foo = Reference(Bar.title, Foo.title)        bar = self.store.get(Bar, 400)        self.assertEquals(bar.title, "Title 30")        self.assertEquals(bar.foo, None)        mybar = self.store.get(MyBar, 400)        self.assertEquals(mybar.title, "Title 30")        self.assertNotEquals(mybar.foo, None)        self.assertEquals(mybar.foo.id, 10)        self.assertEquals(mybar.foo.title, "Title 30")    def test_new_reference(self):        bar = Bar()        bar.id = 400        bar.title = u"Title 400"        bar.foo_id = 10        self.assertEquals(bar.foo, None)        self.store.add(bar)        self.assertTrue(bar.foo)        self.assertEquals(bar.foo.title, "Title 30")    def test_set_reference(self):        bar = self.store.get(Bar, 100)        self.assertEquals(bar.foo.id, 10)        foo = self.store.get(Foo, 30)        bar.foo = foo        self.assertEquals(bar.foo.id, 30)        result = self.store.execute("SELECT foo_id FROM bar WHERE id=100")        self.assertEquals(result.get_one(), (30,))    def test_reference_assign_remote_key(self):        bar = self.store.get(Bar, 100)        self.assertEquals(bar.foo.id, 10)        bar.foo = 30        self.assertEquals(bar.foo_id, 30)        self.assertEquals(bar.foo.id, 30)        result = self.store.execute("SELECT foo_id FROM bar WHERE id=100")        self.assertEquals(result.get_one(), (30,))    def test_reference_on_added(self):        foo = Foo()        foo.title = u"Title 40"        self.store.add(foo)        bar = Bar()        bar.id = 400        bar.title = u"Title 400"        bar.foo = foo        self.store.add(bar)        self.assertEquals(bar.foo.id, None)        self.assertEquals(bar.foo.title, "Title 40")        self.store.flush()        self.assertTrue(bar.foo.id)        self.assertEquals(bar.foo.title, "Title 40")        result = self.store.execute("SELECT foo.title FROM foo, bar "                                    "WHERE bar.id=400 AND "                                    "foo.id = bar.foo_id")        self.assertEquals(result.get_one(), ("Title 40",))    def test_reference_on_added_with_autoreload_key(self):        foo = Foo()        foo.title = u"Title 40"        self.store.add(foo)        bar = Bar()        bar.id = 400        bar.title = u"Title 400"        bar.foo = foo        self.store.add(bar)        self.assertEquals(bar.foo.id, None)        self.assertEquals(bar.foo.title, "Title 40")        foo.id = AutoReload        # Variable shouldn't be autoreloaded yet.        obj_info = get_obj_info(foo)        self.assertEquals(obj_info.variables[Foo.id].get_lazy(), AutoReload)        self.assertEquals(type(foo.id), int)        self.store.flush()        self.assertTrue(bar.foo.id)        self.assertEquals(bar.foo.title, "Title 40")        result = self.store.execute("SELECT foo.title FROM foo, bar "                                    "WHERE bar.id=400 AND "                                    "foo.id = bar.foo_id")        self.assertEquals(result.get_one(), ("Title 40",))    def test_reference_assign_none(self):        foo = Foo()        foo.title = u"Title 40"        bar = Bar()        bar.id = 400        bar.title = u"Title 400"        bar.foo = foo        bar.foo = None        bar.foo = None # Twice to make sure it doesn't blow up.        self.store.add(bar)        self.store.flush()        self.assertEquals(type(bar.id), int)        self.assertEquals(foo.id, None)    def test_reference_on_added_composed_key(self):        class Bar(object):            __storm_table__ = "bar"            id = Int(primary=True)            foo_id = Int()            title = Unicode()            foo = Reference((foo_id, title), (Foo.id, Foo.title))        foo = Foo()        foo.title = u"Title 40"        self.store.add(foo)        bar = Bar()        bar.id = 400        bar.foo = foo        self.store.add(bar)        self.assertEquals(bar.foo.id, None)        self.assertEquals(bar.foo.title, "Title 40")        self.assertEquals(bar.title, "Title 40")        self.store.flush()        self.assertTrue(bar.foo.id)        self.assertEquals(bar.foo.title, "Title 40")        result = self.store.execute("SELECT foo.title FROM foo, bar "                                    "WHERE bar.id=400 AND "                                    "foo.id = bar.foo_id")        self.assertEquals(result.get_one(), ("Title 40",))    def test_reference_assign_composed_remote_key(self):        class Bar(object):            __storm_table__ = "bar"            id = Int(primary=True)            foo_id = Int()            title = Unicode()            foo = Reference((foo_id, title), (Foo.id, Foo.title))        bar = Bar()        bar.id = 400        bar.foo = (20, u"Title 20")        self.store.add(bar)        self.assertEquals(bar.foo_id, 20)        self.assertEquals(bar.foo.id, 20)        self.assertEquals(bar.title, "Title 20")        self.assertEquals(bar.foo.title, "Title 20")    def test_reference_on_added_unlink_on_flush(self):        foo = Foo()        foo.title = u"Title 40"        self.store.add(foo)        bar = Bar()        bar.id = 400        bar.foo = foo        bar.title = u"Title 400"        self.store.add(bar)        foo.id = 40        self.assertEquals(bar.foo_id, 40)        foo.id = 50        self.assertEquals(bar.foo_id, 50)        foo.id = 60        self.assertEquals(bar.foo_id, 60)        self.store.flush()        foo.id = 70        self.assertEquals(bar.foo_id, 60)    def test_reference_on_two_added(self):        foo1 = Foo()        foo1.title = u"Title 40"        foo2 = Foo()        foo2.title = u"Title 40"        self.store.add(foo1)        self.store.add(foo2)        bar = Bar()        bar.id = 400        bar.title = u"Title 400"        bar.foo = foo1        bar.foo = foo2        self.store.add(bar)        foo1.id = 40        self.assertEquals(bar.foo_id, None)        foo2.id = 50        self.assertEquals(ba

⌨️ 快捷键说明

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