Rob wrote: > Hi, > > I have a question regarding the most efficient way of solving what > should be a fairly simple task. > I have (on a server) a database set up using SQLAlchemy to define a > joined-table (parent/child) inheritance structure (using a > discriminator field as per the documentation etc) > > On a client machine, I want to use SqlSoup to insert data (I don't > want to replicate the object model on the client machine) however, the > only way I can see to do this is along the following lines: > > parentRecord = db.parent.insert( [fields] ) > db.flush() > childRecord = db.child.insert(id=parentRecord.id, [fields]) > db.flush() > > A flush is required (at some point) to commit the data to the table, > but for multiple inserts the method above is horribly slow. > Am I missing something fundamental? Is there a faster/better > (possibly correct!) way to do this?
the fastest way to insert many rows is to execute a table.insert() using executemany syntax. Above, I'm fairly certain SqlSoup can also map to a join, which is probably what you'd want to do here. The inserts occur in a batch where it sends the id of the parent table into the child row before inserting that one. Alternatively, you could create the list of parentRecords first, do a single flush(), then get the list of all the child ids and populate those. If it were me I'd just use a simple joined-table inheritance model with declarative. Using reflected tables, its barely any more typing than what SqlSoup requires. SqlSoup is really just a typing saver in any case its still mapping classes to tables, just in a very rigid and difficult to customize way. > > Many thanks, > Rob > > -- > 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. > > -- 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.