Sqlalchemy文件组织

5 投票
2 回答
1118 浏览
提问于 2025-04-15 20:00

有没有人能分享一下如何组织基于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的设计中,有两个功能可以避免在定义关系时出现交叉导入:

  1. relation()中的backref参数可以让你定义反向关系。
  2. 使用字符串(模型类和它们的字段名称)。不过,这种方法只适用于声明式定义,这可能不适合你的情况。

想了解更多信息,可以查看这个教程章节

撰写回答