使用django python的现有数据库

时间:2016-02-22 09:28:27

标签: python django postgresql sqlalchemy

我有一个现有的数据库,用于另一个使用python和sqlalchemy的应用程序。现在我想构建REST API端点,因为我必须围绕当前代码构建包装器。

我想使用Django,我很少有疑问

  1. 我可以为Django相关表使用相同的数据库,以便我的其他表也在那里,并且一些django生成的表也在同一个数据库中

  2. 我想慢慢将我的应用程序从sqlachemy转移到django ORM,但首先我必须同时使用它们。我的意思是Django ORM中的一些模型,并在SqlAlchemy中休息。这可能吗

2 个答案:

答案 0 :(得分:2)

可以使用带有django的现有数据库。

您必须告诉django忽略此数据库表中的迁移,并使用实际的现有表名,而不是django默认的applabel_model命名:

class ModelForExistingTable(models.Model):

    class Meta:
       managed = False
       db_table = "ExistingTableName"

问题:

  1. Django并不关心其他表,只要django模型所需的表存在并匹配您在django中定义的约束,索引等。

  2. 您可以从一个ORM转换到另一个ORM。如果同时使用两者,您将在同一个应用程序中映射和调用两个对象。它希望易于处理,在对象之间传递数据,合并视图数据等。

  3. 考虑将一切都移到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/