Django-从实时数据库读取,由单独的应用程序创建

时间:2018-08-08 07:38:33

标签: django database sqlite django-models

我有一个位于/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管理表的生命周期,则需要将上方的托管选项更改为True(或直接删除,因为True是其默认值)。

我不知道“管理表的生命周期”是否意味着一旦添加了新数据就更新数据库。

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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

由于根据您的陈述,问题是针对新添加的数据,因此答案应为。但是,如果您的意思是要通过其他服务(而不是通过上面的Django服务)创建新表,那么您当然仍然必须将相应的模型添加到Django(使用managed=False)中,然后就可以访问数据通过Django。