[sqlalchemy] Re: issue with delete(obj) and ManyToOne relations

2008-09-02 Thread Remi Jolin - SysGroup

le 02.09.2008 18:33 Michael Bayer a écrit:
 On Sep 2, 2008, at 12:06 PM, Remi Jolin - SysGroup wrote:

   
 Hello,

 Here is a small example of my issue (it's Elixir syntax, but I think
 it's not an Elixir specific issue) :
 class Rec(Entity):
collection = ManyToOne('Coll')

 class Coll(Entity):
recs = OneToMany('Rec')

 r1 = Rec()
 r2 = Rec()
 c = Coll(recs=[r1,r2])

 at that time len(c.recs) == 2

 if I do something like r1.delete(), I would expect len(c.recs) == 1  
 but
 it stays at 2 until the flush(). Am I missing some parameter on the
 class definitions ?
 I've tried some cascade parameters but they seem to handle the Recs
 deletion when you delete a Coll.
 


 saying r1.delete() won't automatically update the already-loaded  
 recs collection which it's a part of.  You'd instead configure  
 cascade=all, delete-orphan on recs, so that the removal of a Rec  
 from c.recs would result in its deletion.  Otherwise, any activity  
 which refreshes c.recs after a flush has occured will also do.
   
So, instead of r1.delete(),  the solution could be (having configured 
cascade=all, delete-orphan on recs) to do a
r1.collection = None and let the flush() delete it because of the 
cascade rules.
 I'm also not sure if the above is properly associating recs with  
 collection since SQLA usually needs a backref keyword to work this  
 out; I'm not sure what Elixir uses to indicate that.
   
Elixir handles the backrefs without the need to explicitly define them 
as long as there is no ambiguity.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---



[sqlalchemy] max(datetime) does not return a datetime. Bug or feature ?

2008-08-29 Thread Remi Jolin - SysGroup

Hello,

consider the following (Elixir syntax sorry)
class A(Entity):
creation_date = Field(DateTime)
   ...

A.query().max(A.creation_date) returns a unicode and not a datetime as
max([a.creation_date for a in A.query()]) returns

Is it a bug ? (sqlalchemy version 0.4.6)

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---