Страницы

Поиск по вопросам

среда, 15 апреля 2020 г.

Как правильно сохранить данные в бд

#python #ооп #django

                    
Привет всем, я не понимаю как правильно сделать запись в бд, неправильно не хочу
писать и хочется разобраться. 
Есть пасрер который возвращает список с данными определенного типа, вот эти данные
нужно сохранить, но кто должен сохранять эти данные? Модель? Парсер? или другой объект
специально предназначенный для этого? Прощу написать небольшой пример     


Ответы

Ответ 1



Если вопрос концептуальный, то есть понятно как написать код, но непонятно куда его положить, то я бы посоветовал не прикручивать к парсеру функционал сохранения данных. Можно это сохранение сделать во вьюхе, а совсем хорошо написать отдельный модуль с классом-контроллером, который бы получал данные для сохранения, дальше итерировался по ним и создавал/сохранял модели, сформированные из этих данных (ну там MyModel.objects.create(arg1=arg1, arg2=arg2) и т.д.) В этом случае во вьюхе можно получить данные из парсера и передать их экземпляру контроллера, который их и сохранит. Вся логика по обработке данных будет располагаться в объекте контроллера, что удобно и красиво будет. upd Заведите модуль в директории с приложением, назовем его controllers.py # controllers.py class LessonController(object): def __init__(self, data): super(LessonController, self).__init__() self.data = data def save_parsed_data(self): for item in self.data: Lesson.objects.create( subject=item.subject, teacher=item.teacher, ... ) # views.py from controllers import LessonController def my_view(request): x = Parser("D:/rsp.xls") schedule = x.parse() lesson_ctl = LessonController(schedule) lesson_ctl.save_parsed_data Ну вот что-то в этом духе может вам подойдет.

Ответ 2



Привет. Смутно понятно как-то, но если это то, что я понял, сделайте во вьюшке так, например: from .models import Имятвоеймодели def some_function(request): че-нибудь = Имятвоеймодели() че-нибудь.полемодели = какие-тоданныеотпарсера че-нибудь.save() А вообще подробнее опишите свой парсер, дайте пример кода.

Ответ 3



А почему бы не импортировать sql драйвер и уже от этого плясать, данные записать в переменные и их передать в базу? import sqlite3 например.

Комментариев нет:

Отправить комментарий