diff -r 813168d05065 lib/sqlalchemy/engine/base.py
--- a/lib/sqlalchemy/engine/base.py	Thu Apr 26 11:59:50 2012 -0400
+++ b/lib/sqlalchemy/engine/base.py	Fri Apr 27 10:03:55 2012 -0400
@@ -2728,6 +2728,7 @@
         typemap = dialect.dbapi_type_map
         translate_colname = dialect._translate_colname
         self.case_sensitive = dialect.case_sensitive
+        untranslated = None
 
         # high precedence key values.
         primary_keymap = {}
@@ -2782,7 +2783,7 @@
                                 else name.lower()] = (processor, obj, None)
 
 
-            self.keys.append(colname)
+            self.keys.append(untranslated or colname)
             if obj:
                 for o in obj:
                     keymap[o] = rec
diff -r 813168d05065 test/sql/test_query.py
--- a/test/sql/test_query.py	Thu Apr 26 11:59:50 2012 -0400
+++ b/test/sql/test_query.py	Fri Apr 27 10:03:55 2012 -0400
@@ -737,6 +737,11 @@
         self.assert_(r['user_id']) == 1
         self.assert_(r['user_name']) == "john"
 
+        if testing.against("sqlite"):
+            eq_(r.keys(), ['query_users.user_id', 'query_users.user_name'])
+        else:
+            eq_(r.keys(), ['user_id', 'user_name'])
+
         # test using literal tablename.colname
         r = text('select query_users.user_id AS "query_users.user_id", '
                 'query_users.user_name AS "query_users.user_name" from query_users', 
@@ -744,6 +749,7 @@
         self.assert_(r['query_users.user_id']) == 1
         self.assert_(r['query_users.user_name']) == "john"
 
+
         # unary experssions
         r = select([users.c.user_name.distinct()]).order_by(users.c.user_name).execute().first()
         eq_(r[users.c.user_name], 'jack')
