使用DDD方法在Python中持久化POJO

使用DDD方法在Python中持久化POJO,python,domain-driven-design,Python,Domain Driven Design,我正在尝试使用DDD模式创建一个Flask应用程序 DDD的核心原则之一是将域与持久性(基础设施)分离。我已经在一个模块中定义了我的域模型,并将在infrastructure模块中创建一个存储库 然而,我似乎找不到任何关于如何在Python中持久化POJO的信息。我已经研究了sqlalchemy,但是使用sqlalchemy可以创建持久性模型。在DDD中,创建域模型作为持久性模型是一种反模式 对于这样的用例,有哪些持久性选项可用?更具体地说,我可以使用什么持久化选项来持久化定义为POJO的模型

我正在尝试使用DDD模式创建一个Flask应用程序

DDD的核心原则之一是将域与持久性(基础设施)分离。我已经在一个模块中定义了我的域模型,并将在infrastructure模块中创建一个存储库

然而,我似乎找不到任何关于如何在Python中持久化POJO的信息。我已经研究了sqlalchemy,但是使用sqlalchemy可以创建持久性模型。在DDD中,创建域模型作为持久性模型是一种反模式


对于这样的用例,有哪些持久性选项可用?更具体地说,我可以使用什么持久化选项来持久化定义为POJO的模型

对于这种情况,您可以从几种策略中进行选择。在许多情况下,聚合的DTO是DB模型并不是问题。如果需要分离,可以为此DTO创建一个接口,并将其作为模型在存储库中实现

类用户:
id:int
名称:Text
类用户(用户):
定义初始化(self,name):
self.id=autogenerate_id()
self.name=名称
类DBUser(db.Model,User):
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String(100),null=False)
另一种策略是在POPO上映射sqlalchemy表(顺便说一句,在Java中有POJO,普通的旧Java对象,在python中有POPO,普通的旧python对象)。 所以您可以声明表并使用映射器而不是声明模式。 第三个选项是使用库将DB模型映射到类似POPO的对象。 此外,如果要分离DDD组件,则需要考虑单独的迁移。为了更深入地回答这个问题(还有另一个关于StackOverflow的问题),我写了这篇文章。希望这将有助于您解决DDD组件的其他障碍