有没有一种方法可以使用django命令将数据从python列表传递到sqlite数据库的特定字段?
我有从网站上刮下来的数据,经过解析,然后整理成我需要的片段。数据存储在二维列表中,例如有没有一种方法可以使用django命令将数据从python列表传递到sqlite数据库的特定字段?,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我有从网站上刮下来的数据,经过解析,然后整理成我需要的片段。数据存储在二维列表中,例如[[address1,name1,ip1],[address2,name2,ip2]]。上述数据的抓取和存储是通过django命令完成的,我希望在验证数据时使用相同的命令更新我的模型。我还有一个具有以下字段和属性的模型: class MonitoredData(models.Model): external_id = models.UUIDField( primary_key = True,
[[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)
address 1
需要进入mac\u address
字段,name1
需要进入interface\u name
字段,ip1
需要进入ipv4\u address
字段。其他字段需要根据其属性自动填充
获取和解析数据的django命令是:
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]):
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)
我希望将数据存储到数据库中,而不是附加到嵌套if语句中的goodMac列表中
如果您对此有任何帮助,我将不胜感激,我正在使用Python 3.7.5和Django 3.0.5,我已经解决了!我希望这将节省一些时间和麻烦,我通过解决这个问题,解决方案,正如我所怀疑的,是相当琐碎的,一旦我找到它。导入模型,实例化其对象,然后更新字段并使用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)
以下是我最终使用的文档的链接:
这里使用django命令的
到底是什么意思?
所以我首先使用django命令来运行获取数据的代码,在这里,我不能包含所有数据,但在这里:class命令(BaseCommand):def句柄(self,*args,**选项):form=MonitoredInterfaceForm()对于parsedData1中的k:if len(k[0])==12:if match(k[0]):goodMac1.append(k)else:badMac1.append(k)我想,与其将数据追加到goodMac1列表中,不如将数据插入到相应的字段中。