代码之家  ›  专栏  ›  技术社区  ›  machump

Wtforms-将字段列表数据写入mysql

  •  0
  • machump  · 技术社区  · 7 年前

    假设我有这样一个表格:

    Toys= FieldList(TextField('what toys do you have?'),min_entries=5)
    Fruits= FieldList(TextField('what fruits do you have?'),min_entries=5)
    Jewelry= FieldList(TextField('what jewelries do you have?'),min_entries=5)
    Candy= FieldList(TextField('what candies do you have?'),min_entries=5)
    

    Toy1=form.Toys[1].data ,如何聚合表单提交中的所有字段列表数据,以便写入SQL表,如:?

    Toys | Fruits | Jewelry | Candy
    ball  apple    Necklace  M&Ms
    stick orange   Bracelet  skittles
    top   grapes   tie clip  lollipop
    

    为了简单起见,我设置了 min_entries=5

    field_dict=dict()
        for f in form:
            if str(f.type) in ['FieldList']:
                for x in range(1,5):
                    field_dict.update({f.name:f.data[x]})
                        sql_insert="INSERT INTO tablename ({}) values ({})".format(
                            ",".join(field_dict.keys()),
                            ",".join('"' + str(value) + '"' for value in field_dict.values()))
                        c.execute(sql_insert)
    

    Fieldlist ,生成如下表:

     Toys | Fruits | Jewelry | Candy
    ball   NULL       NULL     NULL
    ball   apple      NULL     NULL
    ball   apple     Necklace  NULL
    ball   apple     Necklace  M&Ms
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Attack68    7 年前

    我对这个问题的理解是,您有一个表单中的条目列表,您希望将这些条目组合成一个元组并插入到数据库中。。

    为了节省我的打字时间,假设您有:

    # some list of keys obtained or hard coded as global..
    KEYS = ['Toys', 'Fruits', 'Candy']
    
    # and a form in which you have
    Toys= FieldList(TextField('what toys do you have?'),min_entries=3)
    Fruits= FieldList(TextField('what fruits do you have?'),min_entries=3)
    Candy= FieldList(TextField('what candies do you have?'),min_entries=3)
    

    现在您的工作是循环表单并打包一个元组:

    form = Form()
    for _i in range(3):
        tup = ()
        for key in KEYS:
            tup += (getattr(form, key)[_i].data,)
        sql = "INSERT INTO tablename ({}) values {}".format(
                  ",".join(KEYS), str(tup))
        c.execute(sql)
    

    给它(或一些调试过的衍生工具!)一次尝试