我有一个现有的数据库,用于另一个使用python和sqlalchemy的应用程序。现在我想构建REST API端点,因为我必须围绕当前代码构建包装器。
我想使用Django,我很少有疑问
我可以为Django相关表使用相同的数据库,以便我的其他表也在那里,并且一些django生成的表也在同一个数据库中
我想慢慢将我的应用程序从sqlachemy转移到django ORM,但首先我必须同时使用它们。我的意思是Django ORM中的一些模型,并在SqlAlchemy中休息。这可能吗
答案 0 :(得分:2)
可以使用带有django的现有数据库。
您必须告诉django忽略此数据库表中的迁移,并使用实际的现有表名,而不是django默认的applabel_model命名:
class ModelForExistingTable(models.Model):
class Meta:
managed = False
db_table = "ExistingTableName"
问题:
Django并不关心其他表,只要django模型所需的表存在并匹配您在django中定义的约束,索引等。
您可以从一个ORM转换到另一个ORM。如果同时使用两者,您将在同一个应用程序中映射和调用两个对象。它希望易于处理,在对象之间传递数据,合并视图数据等。
考虑将一切都移到django上。 Django ORM是成熟的,功能丰富,除非你有一些优势 - 可以处理Sqlalchemy所做的一切。
迁移到django ORM主要是为了正确定义模型。从那以后它就容易得多,因为django将模型逻辑继承到查询集,表单,REST框架也是如此。一旦模型定义良好,逻辑通常可用于框架的其他组件。
请参阅https://docs.djangoproject.com/en/1.9/howto/legacy-databases/。
答案 1 :(得分:0)
是 - 您可以使用具有两个ORM的相同数据库。你只需要在Django中创建Django模型并告诉它它是什么表(你通过在模型上创建Meta子类并提供db_table属性来实现)。您可以像现在一样使用SQLAlchemy管理其他表。 Django并没有强加它自己的ORM,无论是否使用它都是你的选择。
这里有一段文档可以帮助您入门https://docs.djangoproject.com/en/1.9/howto/legacy-databases/