Как сохранить список python и тип данных словаря в sqlite через peewee - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть список в python, например [2, 2, 4, 2, 4, 4, 2, 2, 4]. Я сохраняю это через peewee в таблицу sqlite типа «Текст». Когда я читаю это из БД, я получаю строку: "[2, 2, 4, 2, 4, 4, 2, 2, 4]"

Если я хочу перебрать список, например value = model_risk[i] он перебирает символ, потому что это строка

модель: [2, 2, 4, 2, 4, 4, 2, 2, 4] value from db: [ value from db: 2 value from db: , value from db:<br> value from db: 2 value from db: , value from db:<br> value from db: 4 value from db: ,

Итак, вопросы являются: 1.) Как правильно сохранить список в sqlite через peewee ORM 2.) Как правильно прочитать список в sqlite через peewee ORM 3.) Те же вопросы сверху для словаря типа

ОБНОВЛЕНИЕ: сделал это теперь так:

1.) Загрузка строк из TEXT-столбцов SQLite в список python (ранее сохраненный из списка python): if ra_obj.model_risk: model_risk = ra_obj.model_risk.strip('[]').split(', ')

2.) Загрузка словари из TEXT-столбцов SQLite в python dict (ранее сохраненный из python dict):

def dict_from_str(string) -> dict:
    """ Convert given string to a dictionary. """
    dict_ret: dict = {}

    if string:
        import json
        json_acceptable_string = string.replace("'", "\"")
        try:
            dict_ret = json.loads(json_acceptable_string)
        except json.decoder.JSONDecodeError:
            print("json decoder error")

    return dict_ret

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете попробовать использовать тип ArrayField (если вы используете Postgres). Или вы можете использовать тип JSON, который поддерживается в Sqlite> 3.9 (я думаю) и Postgres или в недавнем i-1007 * MySQL.

Возможно, вы в принципе упустили идею что таблица базы данных похожа на электронную таблицу. Как вы храните список чисел в электронной таблице? Вы не упаковываете их все в одну клетку. Вы их нормализуете.

...