Как вставлять данные c помощью sqlalshemy из массива в бд?

Такой вопрос: есть две таблицы с отношением один ко многим. Значения одной из таблиц может приходить с множествами значений. Как можно эти данные вставить в бд? Cначала получаю данные из формы
if request.method == 'POST':
            app_name_get = request.form['app_name']
            email_get = request.form['email']

Далее получаю данные, которых может быть много
for name_file in request.files:
                    file = request.files[name_file]
                    addFile = (Hotel(name_file=file.name, data_file=file.read()))
                    addFiles.append(addFile)

После этого остается только закинуть данные в БД.
connect = engine_mart.connect()
                sessions = session_mart()
                new_feedback_message = Location(app_name=app_name_get, email=email_get, phone=phone_get,
                                                        bug_or_sentence=bug_or_sent_get, message=message_get,
                                                        user_id=user_id_get)

                new_feedback_message.hotels.append(addFiles)
                sessions.add(new_feedback_message)
                sessions.commit()   ```

Как можно вставлять эти данные, чтобы у одной записи new_feedback_mesage, было несколько addFiles? Заранее спасибо.
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
ArsenyMatytsyn
@ArsenyMatytsyn
Руководитель frontend направления, предприниматель
Для множественных связей тебе нужны:
1. Таблица к которой ты привязываешь что-то.
2. Таблица, которая хранит связи.
3. Таблица, в которой ты хранишь то, что хочешь привязать.
Как вариант ты можешь создать медиа-библиотеку, полностью управляемую твоим приложением, которое будет содержать ссылки на файлы, названия, обратную связь и, может расширение, права доступа и т.д. Или же просто ссылки на файл, таким образом получив массив с файлами в первую очередь тебе их нужно сохранить на диск. Не в БД. В БД храни только ссылки на файлы. И перебирая из каждой из них сформировать сущность, которую ты привяжешь к своей сущности обратной связи.

Кроме того, ты можешь хранить их в виде PickleType, либо формировать ссылки в виде строки, которую ты сможешь разобрать и переписать.

ИМХО, первый вариант оптимальнее, впрочем создает некоторые трудности при переносе базы, например. Я имею в виду есть записи в базе, но может не быть файлов, да и удаление файлов тоже придется руками писать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы