- assigned issue to
add keys() to RowProxy, rename built-in attributes with an underscore
Issue #44
resolved
since we added getattr to RowProxy, we should proabbly rename built in attributes with an underscore to decrase the chances of collisions. Also add a keys() method.
user-submitted patch:
Index: test/query.py
===================================================================
--- test/query.py (revision 846)
+++ test/query.py (working copy)
@@ -108,6 +108,11 @@
self.assert_(r.user_id == r['user_id']('user_id') == r[self.users.c.user_id](self.users.c.user_id) ==
2)
self.assert_(r.user_name == r['user_name']('user_name') ==
r[self.users.c.user_name](self.users.c.user_name) == 'jack')
+ def test_column_keys(self):
+ self.users.insert().execute(user_id=1, user_name='foo')
+ r = self.users.select().execute().fetchone()
+ self.assert_(r.keys() == ['user_name']('user_id',))
+
def test_column_accessor_shadow(self):
shadowed = Table('test_shadowed', db,
Column('shadow_id', INT, primary_key = True),
Index: lib/sqlalchemy/engine.py
===================================================================
--- lib/sqlalchemy/engine.py (revision 846)
+++ lib/sqlalchemy/engine.py (working copy)
@@ -631,6 +631,7 @@
self.rowcount = engine.context.rowcount
metadata = cursor.description
self.props = {}
+ self.keys = [ i = 0
if metadata is not None:
for item in metadata:
@@ -644,6 +645,7 @@
raise "None for metadata " + colname
if self.props.setdefault(colname, rec) is not rec:
self.props[colname](]
) =
(ResultProxy.AmbiguousColumn(colname), 0)
+ self.keys.append(colname)
self.props[i](i) = rec
i+=1
@@ -700,6 +702,5 @@
return self.parent._get_col(self.row, name)
except:
raise AttributeError
-
-
-
+ def keys(self):
+ return self.parent.keys
Comments (2)
-
Account Deleted -
Account Deleted - changed status to resolved
(original author: rtl) Added in 6d7e11829f100f78210bf12df2592b7f6dc29f2a. Thanks for the patch!
Also added a few more dictionary methods - iteritems(), iterkeys(), itervalues(), values() and items(). Modified repr() to use the dictionary repr() like DictMixin.
- Log in to comment
(original author: rtl) None