我有一些数据是从网站上刮取,解析并清理成我需要的片段。数据存储在二维列表中,例如[[address1, name1, ip1], [address2, name2, ip2]]
。前面提到的数据的抓取和存储是通过django命令完成的,我想用与验证数据相同的命令来更新我的模型。我也有一个具有以下字段和属性的模型:
class MonitoredData(models.Model):
external_id = models.UUIDField(
primary_key = True,
default = uuid.uuid4,
editable = False)
mac_address = models.CharField(max_length=12)
ipv4_address = models.CharField(max_length=200)
interface_name = models.CharField(max_length=200)
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
address1
需要进入mac_address
字段,name1
需要进入interface_name
字段,ip1
需要进入{{1 }}字段。其他字段需要根据其属性自动填充。
抓取并解析数据的django命令是:
ipv4_address
我想将数据存储到数据库中,而不是附加到嵌套if语句中的goodMac列表中。
对此的任何帮助将不胜感激,我正在使用Python 3.7.5和Django 3.0.5
答案 0 :(得分:1)
我知道了!我希望这可以节省所有的时间和麻烦,而我一直想解决这个问题。我怀疑,一旦找到解决方案,这个解决方案就显得微不足道了。您导入模型,实例化模型的对象,然后更新字段并使用save()函数。这是固定代码。
import requests
from django.core.management.base import BaseCommand, CommandError
from Monitor.models import *
from Monitor.parse1 import parse1
from Monitor.parse2 import parse2
from Monitor.matcher import match
class Command(BaseCommand):
def handle(self, *args, **options):
url1 = 'https://next.json-generator.com/api/json/get/41wV8bj_O'
url2 = 'https://next.json-generator.com/api/json/get/Nk48cbjdO'
res1 = requests.get(url1)
data1 = str(res1.content)
res2 = requests.get(url2)
data2 = str(res2.content)
parsedData1 = parse1(data1)
goodMac1 = []
badMac1 = []
for k in parsedData1:
if len(k[0]) == 12:
if match(k[0]):
monInter = MonitoredData()
monInter.mac_address = k[0]
monInter.interface_name = k[1]
monInter.ipv4_address = k[2]
monInter.save()
goodMac1.append(k)
else:
badMac1.append(k)
parsedData2 = parse2(data2)
goodMac2 = []
badMac2 = []
for j in parsedData2:
if len(j[0]) == 12:
if match(j[0]):
goodMac2.append(j)
else:
badMac2.append(j)
以下是我最终使用的文档链接: https://docs.djangoproject.com/en/3.0/ref/models/instances/#django.db.models.Model.save https://docs.djangoproject.com/en/3.0/topics/db/models/