【发布时间】:2013-04-30 03:52:34
【问题描述】:
编辑:主要主题: 有没有办法强制 SqlAlchemy 尽可能地预先填充会话? 尽可能多地从数据库同步状态(此时不会有数据库更新)。 p>
我遇到了一些轻微的性能问题,我相信我已经将其追溯到 SqlAlchemy。我确信我的声明性和 db-schema 有一些变化可以缩短时间,但这不是我在这里要问的。
我的 SqlAlchemy 声明式定义了 8 个类,我的数据库有 11 个表,其中只有 7 个保存我的真实数据,我的数据库总共有 800 条记录(所有整数和 UnicodeText)。我的数据库引擎是 sqlite,目前实际大小是 242Kb。
确实,实体的数量很少,但许多表关系具有递归行为(5-6 级深)。我的问题始于 SA 为我做的美妙的自动魔术,以及我不愿意用我自己的 python 类正确提取数据。
我的 ORM 属性访问分散在各种迭代器、递归评估器中,一直到我的文件 I/O 流。对这些属性的访问很大程度上是非线性的,每次我进行查找时,我的调用堆栈都会在 SqlAlchemy 中消失很长一段时间,并且我会收到很多单例查询。
我主要使用默认 SA 设置(python 2.7.2、sqlalchemy 0.7)。
考虑到 RAM 不是问题,而且我的数据库非常小(暂时),有没有办法可以强制 SqlAlchemy 尽可能预填充会话。我希望如果我只是将原始数据加载到内存中,那么我要做的最多就是动态地追逐一些连接(几乎所有查询都非常简单)。
我希望能在 5 分钟内修复,以便尽快生成一些报告。我下个月的 TODO 可能会充满直接的表查询和更紧密的业务逻辑,可以管道元组。
【问题讨论】:
-
您的问题过于冗长,您的问题到底是什么?
-
听起来您想将 SqlAlchemy 用作数据库而不是 ORM。
-
我不能只查询表(或者实际上,这对我想要的有用吗?),它是我挂断的 ORM 位。我有很多我依赖的多态性和关系。
-
我基本上是想找到一个快速的解决方法,直到我能够正确解决我的整体设计不佳的问题。
标签: python sqlalchemy