У меня есть html-документ, который динамически позволяет пользователю создавать таблицу. Есть кнопка «Добавить строку», и, нажав на кнопку, они могут добавить строку входных данных в таблицу. Добавляемый код будет выглядеть так:
<tr>
<td class = 'sct_components_input'> <input class = 'sct_components_input_5'> </input> </td>
<td class = 'sct_components_input'> <input class = 'sct_components_input_5'> </input> </td>
<td class = 'sct_components_input'> <input class = 'sct_components_input_10'> </input> </td>
<td class = 'sct_components_input'> <input class = 'sct_components_input_10'> </input> </td>
<td class = 'sct_components_input'> <textarea class = 'sct_components_input_15'> </textarea> </td>
<td class = 'sct_components_input'> <input class = 'sct_components_input_5'> </input> </td>
<td class = 'sct_components_input'> <input class = 'sct_components_input_5'> </input> </td>
<td class = 'sct_components_input'> <textarea class = 'sct_components_input_15'> </textarea> </td>
</tr>
Итак, у меня осталась таблица с множеством входных данных, в которой пользователь создал X строк, это значение будет меняться с каждым пользователем. Мне нужно загрузить все эти входные данные в таблицу mysql с помощью FLASK (sqlalchemy). Но я понятия не имею, как загрузить эти данные.
Я предполагаю, что вам придется повторять запрос загрузки sqlalchemy несколько раз, загружая по одной строке за раз. Подобно тому, как вы загружаете файл CSV в sqlalchemy.
Однако я не знаю, как дать каждому входу уникальное «имя» и таким образом разрешить загрузку формы.
Да, в каждой строке одинаковое количество столбцов
Предположим, ваша динамически созданная таблица выглядит примерно так:
<form>
<table>
<tr>
<td><input name = "first_name"></td>
<td><input name = "age"></td>
</tr>
<tr>
<td><input name = "first_name"></td>
<td><input name = "age"></td>
</tr>
</table>
</form>
Затем в python вы можете получить доступ ко всем данным следующим образом:
first_names = request.form.getlist('first_name')
ages = request.form.getlist('age')
for first_name, age in zip(first_names, ages):
person = Person(first_name, age)
db.session.add(person)
db.session.commit()
Этот метод позволяет вам получить все входные элементы в DOM с тем же именем. Затем вы объединяете полученный список имен с полученным списком возрастов с помощью zip()
. Таким образом, вы можете динамически добавлять количество сопоставленных в базу данных.
Другой подход - дать элементам DOM уникальные имена, но это немного проще.
У каждой строки одинаковые столбцы?