【问题标题】:Django - Reading from live Database, created by separate applicationDjango - 从单独的应用程序创建的实时数据库中读取
【发布时间】:2019-01-15 09:17:35
【问题描述】:

我有一个位于 /home/pi/Desktop/Databsaes/data.db 的 sqlite 数据库,并希望通过我的 models.py 脚本访问它。

要在普通命令提示符下查看表格内容,我会执行:

sqlite3
sqlite> .open data.db
sqlite> SELECT * from table1

我一直在阅读这个official tutorial,但我不明白如何访问我的本地数据库并执行上述操作。

在 SQL 术语中,QuerySet 等同于 SELECT 语句,

...但是我怎样才能直接在我的models.py 脚本中执行类似的操作呢?

Models.py 仍然保持不变:

from __future__ import unicode_literals
from django.db import models

# Create your models here

根据我收集的信息,可以使用字段查找,它为QuerySet 方法指定参数(例如get())。

编辑

我按照tutorial 将数据库导入 Django。

但是我的问题是:导入后通过单独的进程添加到该数据库的新数据是否可以从 Django 一侧看到?

如果您确实希望允许 Django 管理表的生命周期,则需要将上面的 managed 选项更改为 True(或者直接将其删除,因为 True 是其默认值)。

我不知道“管理表的生命周期”是否意味着在添加后使用更新的数据更新数据库。

【问题讨论】:

  • 有什么变化?您的意思是架构更改?不,它们不会自动导入。您需要自己编辑 models.py。你真的做了这么多,这是一个问题吗?理想情况下,您会将数据库的管理转移到 Django 本身并通过迁移进行更改。
  • 不幸的是,我正在以非常快的速度(每分钟 1000 次)记录来自传感器的数据,但是我只需要每 30 秒访问一次数据库。我一直在寻找一种在每次需要读取数据库时自动更新数据库的方法。如果我将数据库管理移到 Django 中,它 (Django) 可以处理如此快速的架构更改吗?
  • 我不确定你在这里问什么。由您的单独进程添加的数据不会更改架构,并且可以通过 Django 立即使用。
  • 我有一个单独的进程每 30 秒将数据记录到数据库中。我需要在 Django 中读取这个数据库并更新我的网页(也是每 30 秒一次)。我的问题是如何将数据库管理移动到 Django 而无需修改我的单独进程。对任何不清楚的地方表示抱歉。
  • 再一次,是的。数据在数据库中。 Django 会查询它。没有进行导入。

标签: django database sqlite django-models


【解决方案1】:

我认为managed=False 的声明可能是让您感到困惑的要点。这是Model._meta.managed上的描述:

如果为 False,则不会对此模型执行任何数据库表创建或删除操作。如果模型表示现有表或已通过其他方式创建的数据库视图,这将很有用。这是 managed=False 时的唯一区别。模型处理的所有其他方面与正常情况完全相同。这包括

这意味着将不会生成新的迁移(通过makemigrations)以使用managed=False 修改模型架构。这意味着您告诉 Django,“我不会通过 Django 更改这些模型的模式”(但通过其他方式,可能通过其他服务)。

请注意,我们所讨论的只是对架构更改的影响,这与您的真实数据无关。建立数据库和 Django 模型的链接后,就像@DanielRoseman 的 cmets 一样,Django 在每次查询时都可以看到其中的任何数据。

因为根据您的陈述,问题是针对新增数据,所以答案应该是。但是,如果您的意思是通过其他服务(而不是通过上面的 Django 服务)创建新表,当然您仍然需要将相应的模型添加到 Django(使用managed=False)然后您将能够通过姜戈。

【讨论】:

  • 据我了解,不会创建新表,只会添加新数据。 fcp 是否正确创建了与数据库的链接?因为我也试图实现类似的目标。
猜你喜欢
  • 1970-01-01
  • 2018-02-26
  • 2016-08-22
  • 2015-06-27
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2020-01-14
相关资源
最近更新 更多