在配置 SQLAlchemy 模型时,有人可以帮助我了解全局,从而确保所有级别的引用完整性吗?
按照参照完整性应该由数据库表达和执行的想法,我创建了一个包含我认为需要的所有约束的模式(目前在 Postgresql 中),因此给我一个我信任的数据库将强制执行参照完整性。
然后我开始在这个数据库之上构建一个应用程序,在声明模式下使用 SQLAlchemy (0.7)。
经过一番搜索和阅读,我了解到我可以配置:
- 我的 Column() 定义上的 onupdate/ondelete 规则。
- 我的 relationship() 定义上的级联选项,
并且这些似乎在 SQLAlchemy 的会话级别上运行。 - 我的 relationship() 定义的passive_deletes 和passive_updates 选项。
并且所有这些选项都有默认值。
但是我对我实际上需要对我的 SQLAlchemy 模型做多少感到困惑,以确保 SQLAlchemy 在会话期间不会与数据库及其约束不同步。
如果我在 SQLAlchemy 中的 Columns() 定义上配置“onupdate”等,我到底要实现什么?
对于级联和passive_delete/passive_update 规则,我可以在relationship() 上进行配置。我在这里需要什么,为什么?
或者改写我的问题:SQLAlchemy 会在多大程度上了解数据库模式中配置的约束,以及我必须在多大程度上(以及如何)在我的模型中重复它们?
还有什么我应该注意的吗?:)