如何在 Django 中执行具有多个数据库链接的 Oracle SQL 查询?

问题描述 投票:0回答:1

我正在开发一个 Django 项目,我需要执行涉及多个数据库链接的复杂 Oracle SQL 查询。我已经在 Django 设置中配置了两个数据库的数据库凭据,但我正在努力解决如何正确执行通过这些链接从不同数据库获取数据的查询。

这是我尝试执行的查询类型的示例:

SELECT 
    CASE 
        WHEN ACDMH_LOC_CODE LIKE '02%' THEN 'KHOBAR'
        WHEN ACDMH_LOC_CODE LIKE '03%' THEN 'RIYADH'
        ELSE 'JEDDAH'
    END AS Region,
    ACDMH_INTF_YN,
    ACDMH_TRANSACTION_TYPE AS TRANSACTION_TYPE,
    ACDMH_SOURCE_DOC_NO AS SOURCE_DOC_NO,
    TO_CHAR(ACDMH_TRANSACTION_DATE, 'dd-MM-yyyy') AS TRANSACTION_DATE,
    ACDMH_CUSTOMER_ID AS CUSTOMER_No,
    CUSTOMER_NAME,
    TO_CHAR(ACDMH_CRE_DATE, 'dd-mm-yyyy') AS Pushed_date_WinIT,
    TO_CHAR(ACDMH_CRE_DATE, 'hh:mi:ss AM') AS Pushed_time_WinIT,
    ACDMH_INTF_ORA_REF AS ERP_REF,
    ACDMH_LOC_CODE AS LOC_CODE,
    ACDMD_ORIGINAL_INVOICE_NO AS ORIGINAL_INVOICE_NO,
    ACDMD_OLD_VALUE AS fake_PRICE,
    ACDMD_NEW_VALUE AS selling_price,
    ACDMD_TOTAL AS tran_value,
    ACDMD_TAX_AMOUNT AS TAX_AMOUNT
FROM 
    AX_CREDIT_DEBIT_MEMO_HEADERS@erpbridge
    INNER JOIN AX_CREDIT_DEBIT_MEMO_LINES@erpbridge ON ACDMH_HEADER_ID = ACDMD_HEADER_ID
    LEFT JOIN AXKSA_ORACLE_CUSTOMER ON CUSTOMER_NUMBER = ACDMH_CUSTOMER_ID
WHERE 
    [some conditions];

此查询涉及到其他来源的数据库链接(@erpbridge)。我不确定如何在 Django 中执行这样的查询,特别是考虑到数据库链接。

我有以下问题:

如果使用多个数据库链接,如何在 Django 中执行此 Oracle SQL 查询? Django 中处理 Oracle 数据库链接是否有任何特定配置或注意事项? 使用 Django 的原始 SQL 查询执行是否是正确的方法,或者是否有更有效的方法? 任何指导或示例将不胜感激!

django oracle-sqldeveloper django-database oracle-database
1个回答
0
投票

我没有使用oracle数据库的经验,但是我有很多使用MYSQL和SQL server SQL的经验。在 django 中,我不能使用原始 SQL,出于安全原因绝对不推荐。使用djando,我使用外键利用所有可能的关系的orm,在你的情况下你不能,当这种情况发生在我身上时,我使用pandas。我使用 django 查询集导入所需的所有数据,将查询集加载到 Pandas 数据框中。我使用 pandas 数据帧进行所有连接、条件等,如果我有大数据,我首先使用 numpy 来准备 pandas 数据帧。我向您保证您将获得最大的效率和灵活性。在数据操作中,pandas 编写 SQL,但它们是双向表,并且无需迭代即可处理数据集。它们是 Python 中的最高效率,因此也是 Django 中的最高效率。 我的建议是通过研究 pandas 来解决你的问题。我希望能被证明有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.