masetto wrote: > Hi all, > > i am writing a python script which parse an xml file (python lxml) and > import it into a sqlite db, and it works. > The xml file size is about 30Mb and the import operation takes about 15 > minutes (do you think is too much? is there something i can do to speed up > the process?) > > This is a piece of the import function: > > ... > for definition in definitions.getchildren(): #iterate for every xml > children > node > defInst = SQLTableBuilder_Definition.DefinitionClass(definition) #read > and write on db some attribute of the node > ... > if subbaElem1.tag == mainNS + "platform": #another loop iterate for > every sub-node of the definition node > platf = SQLTableBuilder_Platform.PlatformClass() > platf.setPlatform(str(subbaElem1)) > platf.platformId_fk = defInst.defId > > session.add(platf) > session.commit() > ... > session.add(defInst) > session.commit()
don't commit on every node and on every sub-node. Just commit once every 1000 new objects or so. will save a ton of processing. > > where DefinitionClass contains the attributes declaration (primary_key, > column(string), etc.) and a Foreign Key. > There is a relation between the definition table and the platform table > (one > or more platforms - Operating System - can be associated to a single > definition) so, > in the platform table, i've added the following: platformId_fk = > Column('definitionId_fk', Integer, ForeignKey('definitions.defId')) > > All my ORM-Classes are declared within n different classes within n > different python modules so, i've included the needed imports everytime i > needed it. > And i suppose this is a problem, at least for me, sometime, because when i > try to add: PlatformRel = > relation(SQLTableBuilder_Definition.DefinitionClass, backref="platform") > within my platformClass, i got: 'list' object has no attribute > '_sa_instance_state' :/ > > So, i've tried to "manually" set the foreign key, as you can see above. In > the documentation (http://www.sqlalchemy.org/docs/ormtutorial.html) i > read: > " SQLAlchemy is automatically aware of many-to-one/one-to-many based on > foreign keys." Does this mean that what i've done is correct or i'm a > little > confused? If i "manually" set a foreign key value, does sqlalchemy > understand that a relation between two tables exists? > > Thanks for your attention. > --- > Masetto > > -- > 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.