#python #database
#python #База данных
Вопрос:
Я пытаюсь извлечь VirtualIP и onvifPort из файла (.db).
У меня есть файл database.db, который выглядит следующим образом:
{
"devices": {
"193619374120978": {
"cameras": {
"14:a7:8b:08:e0:7c": {
"slots": {
"3": {
"onvifPort": "17005",
"rtspPort": "18005",
"virtualIP": "10.27.15.75",
"pubIP": "",
"pubOnvifPort": "0",
"pubRtspPort": "0"
}
}
},
"ac:cc:8e:a8:84:e1": {
"slots": {
"2": {
"onvifPort": "17003",
"rtspPort": "18003",
"virtualIP": "10.27.15.75",
"pubIP": "",
"pubOnvifPort": "0",
"pubRtspPort": "0"
}
}
},
"14:a7:8b:22:86:f6": {
"slots": {
"1": {
"onvifPort": "17004",
"rtspPort": "18004",
"virtualIP": "10.27.15.75",
"pubIP": "",
"pubOnvifPort": "0",
"pubRtspPort": "0"
}
}
}
}
}
}
}
Я должен прочитать этот файл с помощью python и присвоить эти значения переменным python.
Я новичок в python, и я только что попробовал что-то подобное, но я не получаю желаемого результата. Я хотел бы знать, как открыть и прочитать файл (.db) и присвоить значения
with open("bmdatabase.db","r") as infile:
inputs = json.load(infile)
#con = sqlite3.connect('bmdatabase.db')
#c = con.cursor()
for item in range(len(inputs["devices[].cameras[].slots[]"])):
IP = inputs["devices[].cameras[].slots[]"][item]["virtualIP"]
PORT = inputs["devices[].cameras[].slots[]"][item]["onvifPort"]
ожидаемый результат:
имя пользователя и пароль должны быть постоянными для всех 3 устройств
IP = virtualIP of slot[1]from database.db file
PORT = onvifPort of slot[1] from database.db file
USERNAME = "admin"
PASSWORD = "Abcd"
IP = virtualIP of slot[2]from database.db file
PORT = onvifPort of slot[2] from database.db file
USERNAME = "admin"
PASSWORD = "Abcd"
IP = virtualIP of slot[3]from database.db file
PORT = onvifPort of slot[3] from database.db file
USERNAME = "admin"
PASSWORD = "Abcd"
кто-нибудь может мне помочь с этим??
Комментарии:
1. Можете ли вы отредактировать свой вопрос и указать ожидаемый результат?
2. @AndrejKesely отредактировано, теперь вы можете проверить
Ответ №1:
Вы можете попробовать этот пример для анализа ваших данных:
db = {
"devices": {
"193619374120978": {
"cameras": {
"14:a7:8b:08:e0:7c": {
"slots": {
"3": {
"onvifPort": "17005",
"rtspPort": "18005",
"virtualIP": "10.27.15.75",
"pubIP": "",
"pubOnvifPort": "0",
"pubRtspPort": "0"
}
}
},
"ac:cc:8e:a8:84:e1": {
"slots": {
"2": {
"onvifPort": "17003",
"rtspPort": "18003",
"virtualIP": "10.27.15.75",
"pubIP": "",
"pubOnvifPort": "0",
"pubRtspPort": "0"
}
}
},
"14:a7:8b:22:86:f6": {
"slots": {
"1": {
"onvifPort": "17004",
"rtspPort": "18004",
"virtualIP": "10.27.15.75",
"pubIP": "",
"pubOnvifPort": "0",
"pubRtspPort": "0"
}
}
}
}
}
}
}
parsed = []
for device_id in db['devices']:
for camera_mac in db['devices'][device_id]['cameras']:
for slot in db['devices'][device_id]['cameras'][camera_mac]['slots']:
parsed.append({
'IP': db['devices'][device_id]['cameras'][camera_mac]['slots'][slot]['virtualIP'],
'PORT': db['devices'][device_id]['cameras'][camera_mac]['slots'][slot]['onvifPort'],
'USERNAME': 'admin',
'PASSWORD': 'Abcd'
})
from pprint import pprint
pprint(parsed)
С принтами:
[{'IP': '10.27.15.75',
'PASSWORD': 'Abcd',
'PORT': '17005',
'USERNAME': 'admin'},
{'IP': '10.27.15.75',
'PASSWORD': 'Abcd',
'PORT': '17003',
'USERNAME': 'admin'},
{'IP': '10.27.15.75',
'PASSWORD': 'Abcd',
'PORT': '17004',
'USERNAME': 'admin'}]
РЕДАКТИРОВАТЬ: для загрузки данных из файла
import json
db = json.load(open('<your file-name>', 'r'))
print(db)
Комментарии:
1. не могли бы вы также, пожалуйста, рассказать мне, как открыть файл (db) и получить из него значения
2. @saivamsi Файл выглядит как Json. Вы можете использовать
json
module для его загрузки. Смотрите мое редактирование.
Ответ №2:
for device in inputs["devices"]:
for camera in device["cameras"]:
for slot in camera["slots"]:
IP = slot["virtualIP"]
PORT = slot["onvifPort"]