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.

Reply via email to