当变量数量未知时插入Sqlalchemy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当变量数量未知时插入Sqlalchemy相关的知识,希望对你有一定的参考价值。

我有一个动态允许用户创建表的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行数,这个值将随每个用户而变化。我需要使用FLASK(sqlalchemy)将所有这些输入上传到mysql表。但我不知道如何上传这些输入。

我最好的猜测是你必须多次循环sqlalchemy上传查询,一次上传1行。与将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元素赋予唯一的名称,但这有点容易。

以上是关于当变量数量未知时插入Sqlalchemy的主要内容,如果未能解决你的问题,请参考以下文章

当数组的数量和每个数组的长度未知时生成字符组合的所有排列

当所需变量的数量未知时如何使用 tidyr::separate [重复]

当对象数量未知时反序列化Json

Sqlalchemy - 当数据存在关系时,如何正确地将数据批量插入数据库

如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?

插入不适用于 SQLAlchemy 数据库会话