我有一个运行非常快的应用程序。假设运行了10秒钟。它所做的全部工作就是读取一个csv,对其进行解析,然后将某些信息存储在写入数据库的sqlalchemy对象中。 (我们从不尝试读取数据库,仅尝试写入)。
在将要建立的实体添加到多对多关系并将其与我们现在建立的地址实体相关联之后,处理文件的时间增加了一个数量级。我们所做的额外工作很少:仅实例化一个地址,然后使用append将其存储在我们实体的关系集合中。
大多数时间似乎都在optim()
中丢失了,如随附的概要分析屏幕快照所示:
我非常确定这是不必要的浪费时间,因为即使我们从不对数据库进行任何查询(我们总是实例化新对象并将其保存在此应用程序中),看起来它正在尝试进行一些加载。 / p>
有人在这里如何优化sqlalchemy吗?
更新
我尝试设置_load_for_state
只是为了查看它是否正在进行大量数据库读取,或者可能进行了一些额外的写入。奇怪的是,它只在之前(在SQLALCHEMY_ECHO = True
之后)访问数据库本身。我敢肯定,由于数据库访问,所有这些额外的时间都不会花费。