Django数据库数据未显示在应用程序中?

2024-10-01 13:45:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“flows_db”的数据库,它维护两个表“ingress”和“exgress_flows”。我对这两个表都做了一个sqldump,这样我就可以使用家用计算机上的数据了。因此,我使用转储文件在这台计算机上重新创建表,并且我可以看到数据在那里,因为select COUNT(*) from ingress_flows;显示大约有2000个条目。在

然后我使用python manage.py inspectdb从表中创建模型。为了测试它是否有效,我尝试获取一个包含表中所有条目的对象:

views.py

ingress_all = IngressFlows.objects.all()
context = {
           'ingress_all': ingress_all,
            }
return render(request, 'visualise/index.html', context)     

index.html

^{pr2}$

但我只看到No data is available.。因此,对于Django来说,我的数据库似乎是空的,即使我使用了包含原始数据库中所有数据的INSERT语句的转储文件:

INSERT INTO `ingress_flows` VALUES (1434506151,1434506151,'UDP',48,'ff:ff:ff:ff:ff:ff','10.30.150.100','10.30.191.255',137,137,1024,102400),...

python manage.py shell

>>> from visualise.models import IngressFlows
>>> IngressFlows.objects.all()
[]
>>> 

但我可以手动插入对象:

>>> t = IngressFlows(time_start=1434506151,time_end=1434506151,protocol='UDP',inf_in=48,mac_dst='ff:ff:ff:ff:ff:ff',ip_src='10.30.150.100',ip_dst='10.30.191.255',port_src=137,port_dst=137,packets_in=1024,bytes_in=102400)
>>> t.save()
>>> IngressFlows.objects.all()
[<IngressFlows: 1434506151, 1434506151, UDP,    48:ff:ff:ff:ff:ff:ff:10.30.150.100:10.30.191.255,   137:137,    1024,   102400>]
>>> 

Django是否维护自己的数据库,而不是使用系统上原来的MySQL数据库?如果是这样,这是如何适用的,因为它没有使用系统范围内的数据库,这是由其他应用程序更新?Django如何看待这些变化:

谢谢。在

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'flows_db',
        'USER': 'root',
        'PASSWORD': 'dbroot',
        'OPTIONS': {
          'autocommit': True,
        },        
    }
}

Tags: 数据djangoinpy数据库dbobjects计算机