"""RowProxy objects are constructed by ResultProxy objects."""
self.__parent = parent
self.__row = row
- def keys(self):
- return self.__parent.keys
def __iter__(self):
- for k in self.keys():
- yield k
+ for i in range(0, len(self.__row)):
+ yield self.__parent._get_col(self.__row, i)
def __eq__(self, other):
return (other is self) or (other == tuple([self.__parent._get_col(self.__row, key) for key in range(0, len(self.__row))]))
def __repr__(self):
- return repr(dict(self.iteritems()))
+ return repr(tuple([self.__parent._get_col(self.__row, key) for key in range(0, len(self.__row))]))
def __getitem__(self, key):
return self.__parent._get_col(self.__row, key)
def __getattr__(self, name):
try:
- return self[name]
+ return self.__parent._get_col(self.__row, name)
except:
raise AttributeError
- def iteritems(self):
- for k in self:
- yield (k, self[k])
- def iterkeys(self):
- return self.__iter__()
- def itervalues(self):
- for _, v in self.iteritems():
- yield v
- def values(self):
- return [v for _, v in self.iteritems()]
- def items(self):
- return list(self.iteritems())
- def __len__(self):
- return len(self.keys())
-
-
-
+ def keys(self):
+ return self.__parent.keys
+ def values(self):
+ return list(self)
+ def __len__(self):
+ return len(self.__row)
self.assert_(r.user_id == r['user_id'] == r[self.users.c.user_id] == 2)
self.assert_(r.user_name == r['user_name'] == r[self.users.c.user_name] == 'jack')
- def test_column_dict_behaviours(self):
+ def test_keys(self):
self.users.insert().execute(user_id=1, user_name='foo')
r = self.users.select().execute().fetchone()
self.assertEqual(r.keys(), ['user_id', 'user_name'])
- self.assertEqual(r.items(), [('user_id', 1), ('user_name', 'foo')])
- self.assertEqual(r.values(), [1, 'foo'])
- self.assertEqual(zip(r.itervalues(), r.iterkeys()), zip(r.values(), r.keys()))
- self.assertEqual(repr(r), "{'user_name': u'foo', 'user_id': 1}")
+
+ def test_len(self):
+ self.users.insert().execute(user_id=1, user_name='foo')
+ r = self.users.select().execute().fetchone()
+ self.assertEqual(len(r), 2)
+ r = db.execute('select user_name, user_id from query_users', {}).fetchone()
self.assertEqual(len(r), 2)
+ r = db.execute('select user_name from query_users', {}).fetchone()
+ self.assertEqual(len(r), 1)
+
+ def test_column_order_with_simple_query(self):
+ # should return values in column definition order
+ self.users.insert().execute(user_id=1, user_name='foo')
+ r = self.users.select(self.users.c.user_id==1).execute().fetchone()
+ self.assertEqual(r[0], 1)
+ self.assertEqual(r[1], 'foo')
+ self.assertEqual(r.keys(), ['user_id', 'user_name'])
+ self.assertEqual(r.values(), [1, 'foo'])
+
+ def test_column_order_with_text_query(self):
+ # should return values in query order
+ self.users.insert().execute(user_id=1, user_name='foo')
+ r = db.execute('select user_name, user_id from query_users', {}).fetchone()
+ self.assertEqual(r[0], 'foo')
+ self.assertEqual(r[1], 1)
+ self.assertEqual(r.keys(), ['user_name', 'user_id'])
+ self.assertEqual(r.values(), ['foo', 1])
def test_column_accessor_shadow(self):
shadowed = Table('test_shadowed', db,