Hi svil,

OK, I found back
http://groups.google.com/group/sqlalchemy/browse_thread/thread/c1bd8cfe862441d6/83f3d5d6fde74b89

It seems that the way I planned to do it is the right way to do it if I
understood well. I added the lines 113-117 at
http://pastebin.com/f17e29b0f but it gives me an error :

<class 'sqlalchemy.orm.exc.FlushError'>: Instance <SpeciesRegion at
0x8f216cc> is an unsaved, pending instance and is an orphan (is not
attached to any parent 'Species' instance via that classes' 'regions'
attribute) 

Any idea ?

Thanks,
Julien

On Tue, 2008-12-16 at 16:10 +0200, a...@svilendobrev.com wrote:
> look down the group recently, there was a similar question on .copy().
> this is more of a semantical question, because diff.things need be 
> treated differently.
>  - own references 1:1 - either None or copy of the referenced object
>  - references m:1 - the reference itself
>  - collecions 1:many) - either new empty collection or new collection 
> of copies of the items
>  - asociation - new collection conating links betwen new owner and the 
> items.
> there may be more sematics involved, e.g. in bitemporal case all above 
> are implemented as associations but are not always treated as such, 
> copy-wise. and other cases.
> 
> svil
> 
> On Tuesday 16 December 2008 15:04:03 Julien Cigar wrote:
> > Dear SQLAlchemy users,
> >
> > I have a mapped object called "Species" with a lot of relation() in
> > it. The user wants to have a "duplicate" function, so for a given
> > "Species" a new exact copy should be created, with all the
> > relation().
> >
> > I have pasted a copy of my code here :
> > http://pastebin.com/f3e50a4fa
> >
> > As you can see at lines 53-55 of my paste, I just iterate on those
> > relations and I use a setattr() on the new object. It works
> > perfectly, except for the "regions" relation (line 16), where
> > SQLAlchemy does UPDATE statements: it replaces the
> > "SpeciesRegion.species_id" of the source Species with the new
> > duplicated Species.id, so the source Species has no more "regions"
> > (SpeciesRegion). It seems logical to me because SpeciesRegion is an
> > association object, but I wondered if there is a better way to do
> > it than 1) iterate of SpeciesRegion objects of the source Species,
> > 2) create a new SpeciesRegion, 3) Adapting SpeciesRegion.region 4)
> > add the new SpeciesRegion to the new Species.regions ?
> >
> > Thanks,
> > Julien
> 
> 
> 
> > 
-- 
Julien Cigar
Belgian Biodiversity Platform
http://www.biodiversity.be
Université Libre de Bruxelles (ULB)
Campus de la Plaine CP 257
Bâtiment NO, Bureau 4 N4 115C (Niveau 4)
Boulevard du Triomphe, entrée ULB 2
B-1050 Bruxelles
Mail: jci...@ulb.ac.be
@biobel: http://biobel.biodiversity.be/person/show/471
Tel : 02 650 57 52


--~--~---------~--~----~------------~-------~--~----~
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 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to