Hello, > just in case you're not motivated to share mappings here, I would note that > an incorrect placement of a > flag like "remote_side" on a relation() may be causing this.
I would have to produce anonymized mappings, but I will do so if it's useful. What do you mean by "incorrect placement of a flag like `remote_side`"? I do have one (exactly one) relation with a `remote_side` flag, but the class it is defined on isn't involved in the script I have timed here. (it is on a recursive relation) > yet another thought, which again reveals how much easier this would be with > some sample code - > if you're in a loop that is calling query(), then changing things, then > around again, you may have > excessive triggering of autoflush going on, which also can result in lots of > _save_obj() calls. Set the > "autoflush" flag on your Session to be false, which you can do temporarily > within a particular section or > across the whole session. Calling commit() will issue a flush(), or > alternatively you can call flush() every > few thousand new records. Ah, a very useful tip. Setting autoflush to False does speed up things quite a bit (a sample run of the script is 2x faster). I haven't found how to enable it temporarily, though. I'm using a ScopedSession instance and if I call `db_session.configure (autoflush=False)`, or set the autoflush attribute, autoflushing still happens. An example: >>> db_session <sqlalchemy.orm.scoping.ScopedSession object at 0x2e467d0> >>> db_session.autoflush = False >>> lg = db_session.query(Logement)[0] [ SNIP long SELECT ] >>> lg.tel1 = "abc" >>> db_session.query(Zone)[0] 2009-12-17 00:11:35,161 INFO sqlalchemy.engine.base.Engine.0x...c550 UPDATE logement SET date_modif=%s, tel1=%s WHERE logement.id_logement = %s 2009-12-17 00:11:35,162 INFO sqlalchemy.engine.base.Engine.0x...c550 [datetime.datetime(2009, 12, 17, 0, 11, 35, 161436), 'abc', 4L] 2009-12-17 00:11:35,167 INFO sqlalchemy.engine.base.Engine.0x...c550 SELECT zone.id_zone AS zone_id_zone, zone.cp AS zone_cp FROM zone LIMIT 0, 1 2009-12-17 00:11:35,168 INFO sqlalchemy.engine.base.Engine.0x...c550 [] <xxx.Zone object at 0x3309150> >>> (as you see, an UPDATE is issued before the SELECT for the query) Regards Antoine. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.