我有一个复杂的对象网络,使用sqlalchemy ORM映射从sqlite数据库中生成.我有很多深层嵌套:
for parent in owner.collection:
for child in parent.collection:
for foo in child.collection:
do lots of calcs with foo.property
Run Code Online (Sandbox Code Playgroud)
我的分析表明,sqlalchemy仪器在这个用例中花了很多时间.
问题是:我不会在运行时更改对象模型(映射属性),因此一旦加载它我就不需要仪器,或者根本不需要任何sqlalchemy开销.经过大量的研究,我想我可能必须从我已经加载的"仪表化对象"中克隆一组"纯python"对象,但那将是一种痛苦.
性能在这里非常重要(它是一个模拟器),所以也许最好使用sqlite api将这些层写为C扩展.有什么想法吗?