【问题标题】:Using Django to extract results from SQL (multiple db's)使用 Django 从 SQL 中提取结果(多个数据库)
【发布时间】:2013-06-10 11:46:22
【问题描述】:

如果有人能为这个问题想出一个更合适的标题,那么我会全力以赴。

我继承了一个 sql 脚本,该脚本从 3 个数据库收集报告信息,使用大量 #temporary 表来存储过滤后的数据。我需要使用这个脚本的输出来使用 Django 生成报告。

我首先检查我需要的数据库并为必要的表制作模型。我最初的计划是对 sql 脚本进行逆向工程(约 330 行和 20 个查询),但事实证明这比我想象的要复杂得多。有没有办法让我运行这个脚本并将#temporary 表保存到另一个数据库中的 Django 模型或其他东西?

我正在使用 Django 1.5 和 MS SQL Server 2008 R2(带有 django-mssql 后端)。感谢您的宝贵时间。

==编辑==

我将稍微介绍一下这个脚本的结构:

SET NOCOUNT ON
declare variables here
set them here

SELECT f.val1, b.val2
INTO #temp_table1
FROM myDB1.dbo.foo f,
     myDB1.dbo.bar b,
     myDB2.dbo.foobar fb
WHERE ...
etc

-- followed by lots more selections --
.
.
.
SET NOCOUNT OFF

SELECT
        [22 things get selected and manipulated here]
        [This is the data I really want]
FROM
        [mixture of #temp tables and myDB1]
WHERE [...]
GROUP BY [...]
ORDER BY [...]

SET NOCOUNT ON
DROP TABLE #temp_table1
.
.
.

SET NOCOUNT OFF

希望对你有帮助

【问题讨论】:

    标签: sql-server django django-orm


    【解决方案1】:

    我将为您的每个临时表创建一个 Django 模型。在每个模型中,我都会定义一个import(self) 方法来截断表格并选择所有行。

    您的其他代码将决定何时为每个临时表导入数据。也许它不需要每次都导入,因此您可以优化导入以仅加载自上次导入以来已更改的数据。

    然后您可以使用 Django 查询来执行您的 SELECT。

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      相关资源
      最近更新 更多