Sqlalchemy文件组织
有没有人能分享一下如何组织基于sqlalchemy的项目?我有很多表和类,还有外键和关系。大家在分开类、表和映射器方面是怎么做的呢?我对这个框架还比较陌生,所以任何帮助都很感激。
举个例子:
classA.py # table definition and class A definition
classB.py # table definition and class B definition
### model.py
import classA,classB
map(classA.classA,clasSA.table)
map(classB.classB,clasSB.table)
把映射器放在classA和classB里面是可行的,但在建立关系时会出现交叉导入的问题……也许我漏掉了什么 :)
2 个回答
3
看看Pylons项目,里面有SA的设置。
meta.py文件里包含了引擎和元数据对象。
models这个包里有声明式类(不需要映射器)。在这个包里,可以根据相关性把你的类分成不同的模块。
也许reddit的源代码是个不错的例子:)
1
在SQLAlchemy的设计中,有两个功能可以避免在定义关系时出现交叉导入:
relation()
中的backref
参数可以让你定义反向关系。- 使用字符串(模型类和它们的字段名称)。不过,这种方法只适用于声明式定义,这可能不适合你的情况。
想了解更多信息,可以查看这个教程章节。