Вставка в Sqlalchemy, когда число переменных неизвестно - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть 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 несколько раз, загружая по 1 строке за раз. Аналогично тому, как вы загружаете файл CSV в sqlalchemy.

Однако я не знаю, как бы я дал каждому входу уникальное «имя» и, таким образом, разрешил загрузку формы.

1 Ответ

0 голосов
/ 07 сентября 2018

Предполагается, что ваш динамически созданный стол выглядит примерно так:

<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, но это немного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...