I'm just catching up on some of the new features and I notice that Ticket #10 (order_by on relations) is closed - thanks!!! I need this feature, so I tried a few things, but it doesn't seem to like using the desc() function as used in other order_by's. There is an svn diff at the end of the mail covering the unit test changes I made to test it (I changed the inserted address data as it was automatically in descending order when sorted by oid).

It doesn't appear to be adding the DESC to the ORDER BY, is the desc() approach the way to go?

Robert

-------------------------------------------------------------------
svn diff:


Index: tables.py
===================================================================
--- tables.py   (revision 697)
+++ tables.py   (working copy)
@@ -84,7 +84,8 @@
     addresses.insert().execute(
         dict(address_id = 1, user_id = 7, email_address = "[EMAIL PROTECTED]"),
         dict(address_id = 2, user_id = 8, email_address = "[EMAIL PROTECTED]"),
-        dict(address_id = 3, user_id = 8, email_address = "[EMAIL PROTECTED]")
+        dict(address_id = 3, user_id = 8, email_address = "[EMAIL PROTECTED]"),
+        dict(address_id = 4, user_id = 8, email_address = "[EMAIL PROTECTED]"),
     )
     orders.insert().execute(
         dict(order_id = 1, user_id = 7, description = 'order 1', isopen=0),
Index: mapper.py
===================================================================
--- mapper.py   (revision 697)
+++ mapper.py   (working copy)
@@ -130,13 +130,32 @@
         dict(address_id = 1, user_id = 7, email_address = "[EMAIL PROTECTED]"),
         dict(address_id = 2, user_id = 8, email_address = "[EMAIL PROTECTED]"),
         dict(address_id = 3, user_id = 8, email_address = "[EMAIL PROTECTED]")
+        dict(address_id = 4, user_id = 8, email_address = "[EMAIL PROTECTED]")

         self.assert_result(l, User,
{'user_id' : 7, 'addresses' : (Address, [{'email_address' : '[EMAIL PROTECTED]'}])}, - {'user_id' : 8, 'addresses' : (Address, [{'email_address':'[EMAIL PROTECTED]'}, {'email_address':'[EMAIL PROTECTED]'}])}, + {'user_id' : 8, 'addresses' : (Address, [{'email_address':'[EMAIL PROTECTED]'}, {'email_address':'[EMAIL PROTECTED]'}, {'email_address':'[EMAIL PROTECTED]'}])},
             {'user_id' : 9, 'addresses' : (Address, [])}
             )

+    def testorderby_desc(self):
+        m = mapper(Address, addresses)
+
+        m = mapper(User, users, properties = dict(
+ addresses = relation(m, lazy = True, order_by=[desc(addresses.c.email_address)]),
+        ))
+        l = m.select()
+        dict(address_id = 1, user_id = 7, email_address = "[EMAIL PROTECTED]"),
+        dict(address_id = 2, user_id = 8, email_address = "[EMAIL PROTECTED]"),
+        dict(address_id = 3, user_id = 8, email_address = "[EMAIL PROTECTED]")
+        dict(address_id = 4, user_id = 8, email_address = "[EMAIL PROTECTED]")
+
+        self.assert_result(l, User,
+ {'user_id' : 7, 'addresses' : (Address, [{'email_address' : '[EMAIL PROTECTED]'}])}, + {'user_id' : 8, 'addresses' : (Address, [{'email_address':'[EMAIL PROTECTED]'}, {'email_address':'[EMAIL PROTECTED]'}, {'email_address':'[EMAIL PROTECTED]'}])},
+            {'user_id' : 9, 'addresses' : (Address, [])},
+            )
+
     def testonetoone(self):
         m = mapper(User, users, properties = dict(
address = relation(Address, addresses, lazy = True, uselist = False)@@ -238,6 +257,23 @@
             {'user_id' : 9, 'addresses' : (Address, [])}
             )

+    def testorderby_desc(self):
+        m = mapper(Address, addresses)
+
+        m = mapper(User, users, properties = dict(
+ addresses = relation(m, lazy = False, order_by=[asc(addresses.c.email_address)]),
+        ))
+        l = m.select()
+        dict(address_id = 1, user_id = 7, email_address = "[EMAIL PROTECTED]"),
+        dict(address_id = 2, user_id = 8, email_address = "[EMAIL PROTECTED]"),
+        dict(address_id = 3, user_id = 8, email_address = "[EMAIL PROTECTED]")
+
+        self.assert_result(l, User,
+            {'user_id' : 9, 'addresses' : (Address, [])},
+ {'user_id' : 8, 'addresses' : (Address, [{'email_address':'[EMAIL PROTECTED]'}, {'email_address':'[EMAIL PROTECTED]'}])}, + {'user_id' : 7, 'addresses' : (Address, [{'email_address' : '[EMAIL PROTECTED]'}])},
+            )
+
     def testonetoone(self):
         m = mapper(User, users, properties = dict(
             address = relation(Address, addresses, lazy = False, uselist = 
False)



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to