python - 将现有数据库与 django python 一起使用

标签 python django postgresql sqlalchemy

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

我想使用 Django,我几乎没有疑问

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

  2. 我想慢慢地将我的应用程序从 sqlachemy 转移到 django ORM,但首先我必须同时使用两者。我的意思是 Django ORM 中的一些模型和 SqlAlchemy 中的其余部分。这可能吗

最佳答案

可以将现有数据库与 django 一起使用。

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

class ModelForExistingTable(models.Model):

    class Meta:
       managed = False
       db_table = "ExistingTableName"

您的问题:

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

  2. 您可以从一个 ORM 转移到另一个。如果您同时使用两者,您将在同一个应用程序中有两个对象映射和调用。它希望能够轻松处理这两者,在对象之间传递数据,为 View 整合数据等。

考虑将所有内容全部移至 Django。 Django ORM 成熟,功能丰富,除非你有一些边缘情况 - 可能可以处理 Sqlalchemy 所做的一切。

迁移到 django ORM 主要是为了正确定义模型。从那里开始就容易多了,因为 django 将模型逻辑继承到查询集、表单,REST 框架也是如此。模型定义好后,逻辑通常可供框架的其他组件使用。

参见 https://docs.djangoproject.com/en/1.9/howto/legacy-databases/ .

关于python - 将现有数据库与 django python 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549975/

相关文章:

python - Django 中 undefined variable

python - 如何创建一个函数来计算每个元素等于其右侧 2 个元素的次数

django - 覆盖 Django 1.6 中的 ModelForm 字段错误消息

Django 。如何获取GenericForeignKey对应的对象

python - Django 消息不起作用

python - 来自 2D pandas 数据框的 Matplotlib 3D 曲面图

python - Django 中的自定义 WSGIRequestHandler.log_message?

sql - PostgreSQL - 存储服务描述的多个版本

ruby-on-rails - 当我在 Rails 中收到 PG::ForeignKeyViolation 错误时,如何显示一个闪现通知消息

sql - PostgreSQL 会优化 LIKE '%' 吗?