Преобразование JSON в SQLite в Python - Как правильно сопоставить ключи json со столбцами базы данных?

Я хочу преобразовать созданный мной файл JSON в базу данных SQLite.

Я намерен позже решить, какой контейнер данных и точка входа лучше всего, json (ввод данных через текстовый редактор) или SQLite (ввод данных через графические интерфейсы, подобные электронной таблице, такие как SQLiteStudio).

Мой файл json похож на этот (содержащий данные о трафике с некоторых перекрестков в моем городе):

...
"2011-12-17 16:00": {
    "local": "Av. Protásio Alves; esquina Ramiro Barcelos",
    "coord": "-30.036916,-51.208093",
    "sentido": "bairro-centro",
    "veiculos": "automotores",
    "modalidade": "semaforo 50-15",
    "regime": "típico",
    "pistas": "2+c",
    "medicoes": [
        [32, 50],
        [40, 50],
        [29, 50],
        [32, 50],
        [35, 50]
        ]
    },
"2011-12-19 08:38": {
    "local": "R. Fernandes Vieira; esquina Protásio Alves",
    "coord": "-30.035535,-51.211079",
    "sentido": "único",
    "veiculos": "automotores",
    "modalidade": "semáforo 30-70",
    "regime": "típico",
    "pistas": "3",
    "medicoes": [
        [23, 30],
        [32, 30],
        [33, 30],
        [32, 30]
        ]
    }
...

И я создал хорошую базу данных с отношением «один ко многим» с этими строками кода Python:

import sqlite3

db = sqlite3.connect("fluxos.sqlite")
c = db.cursor()

c.execute('''create table medicoes
         (timestamp text primary key,
          local text,
          coord text,
          sentido text,
          veiculos text,
          modalidade text,
          pistas text)''')

c.execute('''create table valores
         (id integer primary key,
          quantidade integer,
          tempo integer,
          foreign key (id) references medicoes(timestamp))''')

НО проблема в том, что когда я готовился вставить строки с фактическими данными с чем-то вроде c.execute ("вставить в значения медикаментов (?,?,?,?,?,?,?)"% keys) , я понял, что, поскольку dict загружается из файл JSON не имеет особого порядка, он не отображается должным образом на порядок столбцов в базе данных.

Итак, я спрашиваю: «какую стратегию / метод мне следует использовать для программного чтения ключей из ea ch «блок» в файле JSON (в данном случае «местный», «координированный», «сентидо», «веикулос», «модалидаде», «режим», «пистас» и «медики»), создайте базу данных с помощью столбцы в том же порядке, а затем вставьте строки с правильными значениями »?

У меня неплохой опыт работы с Python, но я только начинаю с SQL, поэтому я хотел бы получить некоторые советы о передовых методах, а не обязательно готовый рецепт.

46
задан Acumenus 15 February 2018 в 20:03
поделиться