【发布时间】:2012-07-31 21:30:39
【问题描述】:
我们正在使用 sqlalchemy 的自动加载功能进行列映射,以防止在我们的代码中进行硬编码。
class users(Base):
__tablename__ = 'users'
__table_args__ = {
'autoload': True,
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
有没有办法序列化或缓存自动加载的元数据/orm,这样我们就不必每次需要从其他脚本/函数引用我们的 orm 类时都经过自动加载过程?
我查看了烧杯缓存和泡菜,但没有找到明确的答案,如果可能或如何做到这一点。
理想情况下,我们仅在已提交对数据库结构的更改但从所有其他脚本/函数引用数据库映射的非自动加载/持久/缓存版本时才运行自动加载映射脚本,
有什么想法吗?
【问题讨论】:
-
为什么不反过来:在 SA 中定义完整的模型。作为副作用,这将充当数据库模式的源代码控制。 当然,这仅在您的 SA 应用程序对您正在使用的数据库具有主要控制权时才有效
-
在我的情况下,数据库开发是单独处理的,这意味着应用程序不会完全控制。但是,我找到了一种腌制元数据的方法,所以我只需要通过数据库连接反映一次来创建腌制,我使用腌制元数据反映的时间只是通过数据库连接的一小部分时间(见下文)。
标签: python caching orm sqlalchemy autoload