使用Django python中的现有数据库

2024-06-01 00:41:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想用Django,我没有什么疑问

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

  2. 我想慢慢地将我的应用程序从sqlachemy转移到django ORM,但首先我必须同时使用这两种方法。我的意思是有些模型在Django-ORM中,而rest在SqlAlchemy中。这是否可能


Tags: django方法代码模型restrestapi数据库应用程序
2条回答

是的,您可以在两个orm中使用同一个数据库。您只需在Django中创建Django模型,并告诉它它是用于哪个表(通过在模型上创建Meta子类并提供db\u table属性来实现这一点)。您可以像现在一样使用SQLAlchemy管理其他表。Django不强制使用它自己的ORM,是否使用它是您的选择。在

这里有一份文档可以帮助您开始https://docs.djangoproject.com/en/1.9/howto/legacy-databases/

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

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

class ModelForExistingTable(models.Model):

    class Meta:
       managed = False
       db_table = "ExistingTableName"

对于您的问题:

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

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

考虑把所有东西都搬到django。DjangoORM是成熟的,功能丰富的,除非您有一些边缘情况-可能可以处理Sqlalchemy所做的一切。在

迁移到django ORM主要是为了正确地定义模型。因为django的模型更容易继承其他的逻辑。一旦模型被很好地定义,这个逻辑通常可用于框架的其他组件。在

https://docs.djangoproject.com/en/1.9/howto/legacy-databases/。在

相关问题 更多 >