【问题标题】:How to get data from database without models in django?如何在 django 中从没有模型的数据库中获取数据?
【发布时间】:2016-11-29 18:37:20
【问题描述】:

我一直在寻找它的doc,但它主要使用带有模型的数据库。

问题是我的数据库太大,我不想创建任何模型

因为它是传统的,并且 我将不得不动态调用不同的表,

所以我只想从中提取数据。这在 django 中可能吗?

【问题讨论】:

  • 不清楚你为什么不想创建模型。它们不会产生额外的负载,并且是迄今为止与数据库交互的最简单方法。
  • @DanielRoseman 我在数据库中有 500 多个表。最初它使用的是表分片技术。所以表名因查询而异(如 user_table_0001、user_table_0002 等)。所以我认为创建模型并不好,因为表的名称总是在变化,是吗?
  • 您找到解决问题的方法了吗?如果是,你做了什么?

标签: django django-models


【解决方案1】:

你可以绕过模型层直接使用sql。但是,您将不得不在 python 中处理表,没有使用 ORM 对象的优势。

https://docs.djangoproject.com/en/1.10/topics/db/sql/#executing-custom-sql-directly

【讨论】:

    【解决方案2】:

    正如评论中所指出的,Django 提供了一种使用inspectdb 从遗留数据库自动生成模型的方法。 这个guide 描述了“清理”自动生成的模型所需的几个手动步骤。

    虽然这并不能直接回答避免模型的既定问题,但它确实解决了您不想自己创建模型的问题,因为数据库很大。

    【讨论】:

      【解决方案3】:

      数据应该存储在某个地方。存储数据的方法有很多,但最可靠的一种是数据库(因此得名)。

      您可以将数据存储在 JSON 文件中并保存。您还可以将数据存储在环境变量中。您甚至可以将数据存储在纯文本文件中。不推荐所有这些。我只是尝试使用数据库,任何类型的数据库(MongoDB / Postgres / MySQL,任何东西)。这就是它的目的。

      【讨论】:

      • 让我把我的观点说清楚。我已经有一个遗留数据库,我只需要连接到它们(我现在可以)。但我的问题是,我想从中获取数据而不为任何表创建“模型”。
      • 抱歉,误解了您的问题。我认为没有办法在不创建模型的情况下使用 Django ORM。您可以自动创建它们:docs.djangoproject.com/en/1.10/howto/legacy-databases。另一件可能有效的事情是创建一个模型,然后使用原始 sql 查询(您可以选择一个带有原始查询的表)。这是更多的工作,但应该是可行的。
      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2019-04-30
      相关资源
      最近更新 更多