Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2017 16:54:02

denis-evs
Зарегистрирован: 2017-03-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python3 SQlite 3 string,list json

Здравствуйте у меня есть данные,которые представлены list
[{'device_id': ‘00000000000001’, ‘channels’: , ‘timestamp’: 1490859888}, {'device_id': ‘00000000000005’, ‘channels’: , ‘timestamp’: 1490859909}, {'device_id': ‘00000000000010’, ‘channels’: , ‘timestamp’: 1490859946}]
Эти данные отправляяются по мобильному интернету. в случае плохой связи они могут не отправиться, поэтому я их сохраняю в базу в виде одной строки:

  
string_data = str(all_data)
db = sqlite3.connect('/home/fa/mainprog/devices.db')
cursor = db.cursor()
                                        # # Create table as per requirement
sql = "UPDATE badData SET datanotsended=?"
cursor.execute(sql, [string_data])
db.commit()
db.close()
перед новой отправкой я должен прочитать эти данные. Читаю я успешно, но вот читаются они как стринг,что в принципе логично, как из этого стринга мне получить мой изначальный list, это необходимо,чтобы сделать append к новым данным, затем обернуть это в json и отправить
Сейчас у меня выходит “битый” json ибо вся старая строка оборачивается вот в такое дело:
[{“timestamp”: 1490859888, “channels”: , “device_id”: “00000000000001”}, {“timestamp”: 1490859909, “channels”: , “device_id”: “00000000000005”}, {“timestamp”: 1490859946, “channels”: , “device_id”: “00000000000010”},

["[{'timestamp': 1490859888, ‘channels’: , ‘device_id’: ‘00000000000001’}, {'timestamp': 1490859909, ‘channels’: , ‘device_id’: ‘00000000000005’}, {'timestamp': 1490859946, ‘channels’: , ‘device_id’: ‘00000000000010’}]"]]

Офлайн

#2 Март 30, 2017 23:10:25

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Python3 SQlite 3 string,list json

denis-evs
ну вот у Вас в голове ничего не щелкнуло что что то пошло явно не так? Берете список, сериализуете его через json.dumps(all_data), отправляете в базу получившуюся строку. Когда надо читаете из базы эту строку, делаете десереализацию json.loads(my_string) и получаете вновь список. Ну а дальше делайте что нужно с ним.
А конвертировать список в строку, что бы потом обратно конвертировать через eval() - ну это совсем не правильно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 31, 2017 15:23:47

denis-evs
Зарегистрирован: 2017-03-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python3 SQlite 3 string,list json

Спасибо мил человек. Выручили

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version