我有一個名爲'flows_db'的數據庫,它維護2個表'ingress_flows'和'egress_flows'。我做了兩個表的sqldump,所以我可以在家用電腦上使用這些數據。所以我使用轉儲文件重新創建這臺計算機上的表,我可以看到數據在那裏,因爲select COUNT(*) from ingress_flows;
顯示有大約2000個條目。Django - 數據庫數據沒有在應用程序中顯示?
然後我使用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
:
{% if ingress_all %}
{% for flow in ingress_all %}
<script>
console.log("{{ flow.protocol }}");
</script>
{% endfor %}
{% else %}
<p>No data is available.</p>
{% endif %}
但我看到的是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,
},
}
}
你使用了哪個數據庫?你有沒有在Django設置中設置你的數據庫配置?如果不是,Django使用Sqlite作爲默認值。 –
我正在使用MySQL數據庫。我已經在上面添加了我的'settings.py'配置。謝謝。 – BelegNeurion
你的機器上有更多的1數據庫服務器嗎?當你從Django shell添加行時,是否顯示在'select COUNT(*)from ingress_flows;'? –