【问题标题】:How to two apps from django to conect one db postgresql如何从 django 的两个应用程序连接一个数据库 postgresql
【发布时间】:2018-07-11 14:44:32
【问题描述】:

我有一个小问题。

我在 Django rest 框架中使用 PostgreSQL 有一个应用程序(项目名为 djangoFall),我使用 Django 构建了其他名为 djangoRuim 的项目,但我不知道如何连接和读取 djangoRuim 中的表,例如

djangoFall 与 PostgreSQL 的连接正在工作

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'colonybitdb0',
    'USER': 'postgres',
    'PASSWORD': 'root2017',
    'HOST': '127.0.0.1',
    'PORT': '5432',
} }

在这里我可以读到这样的表格

from djangoFall.profile_clbt.models import HelperNotificationMsg

djangoRuim 使用相同的连接连接 PostgreSQL DB 正在工作,但我不知道如何读取表格

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'colonybitdb0',
    'USER': 'postgres',
    'PASSWORD': 'root2017',
    'HOST': '127.0.0.1',
    'PORT': '5432',
}}

在这里我无法读取同一张表

from .models import HelperNotificationMsg # wrong true ? 

因为我这里没有模型。

请帮助我,如何阅读这些表格。

【问题讨论】:

    标签: django postgresql django-rest-framework


    【解决方案1】:

    您可以使用connection 对象将execute direct SQL query 用于在第二个应用程序中由Django 生成的表名,或者在第二个应用程序models.pyMeta 选项中分配给db_table 的值。这将在这里起作用,因为您为这两个应用程序使用相同的数据库设置。

    如果数据库设置不同,您将需要使用驱动程序显式连接到外部数据库并执行 SQL 查询。

    话虽如此,由于您使用的是同一个数据库,我认为您应该考虑合并这两个应用程序,或者打包一个。但这取决于您要归档的内容和整体架构。

    【讨论】:

      【解决方案2】:

      如果真的必须从两个不同的 django 应用程序访问同一个数据库,那么需要做的是:

      1. 在两个应用程序中创建相同的对象模型,确保每个对象成员都相同。
      2. 使用相同的凭据和 url 访问数据库。
      3. 现在,这两个应用程序都可以通过隐式竞争条件保护访问数据库,假设数据库对此具有本机支持。 (所有现代数据库都有这种支持。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-07
        • 2019-12-01
        • 1970-01-01
        • 2021-11-16
        • 2023-01-15
        • 2015-10-25
        • 1970-01-01
        • 2019-02-27
        相关资源
        最近更新 更多