高效地将WTForm提交写入mysql

高效地将WTForm提交写入mysql,mysql,flask,flask-wtforms,Mysql,Flask,Flask Wtforms,我有一个很长的表格: i、 e 当用户提交表单时,Flask检索每个问题的数据: i、 e 然后我使用sql将数据写入数据库 i、 e SQL注入不是问题,我不希望使用SQLalchemy。有没有更有效的方法 编辑: 假设某些字段类型是FieldList、Formfields或HiddenFields。我怎样才能把这些写进表格?如何在循环中跳过它们?快速易读的解决方案 written_fields = [f for f in form if f.id in WRITE_TO_SQL_FIELDS

我有一个很长的表格:

i、 e

当用户提交表单时,Flask检索每个问题的数据:

i、 e

然后我使用sql将数据写入数据库 i、 e

SQL注入不是问题,我不希望使用SQLalchemy。有没有更有效的方法

编辑:
假设某些字段类型是FieldList、Formfields或HiddenFields。我怎样才能把这些写进表格?如何在循环中跳过它们?

快速易读的解决方案

written_fields = [f for f in form if f.id in WRITE_TO_SQL_FIELDS]
cursor.execute(
    "INSERT INTO table ({}) values ({})".format(
        ",".join(f.id for f in written_fields),
        ",".join(str(f.data) for f in written_fields),
    )
)
或者,如果您更喜欢按类型筛选:

BLACKLISTED_TYPES = (wtforms.FieldList, wtforms.Formfield, wtforms.HiddenField)
written_fields = [f for f in form if not isinstance(f, BLACKLISTED_TYPES)] 

嗨,菲安,谢谢你的解决方案。回想起来,我本可以在最初的帖子中更详细地描述。您能告诉我在循环/写入SQL时如何解释或排除
字段列表
表单字段
隐藏字段
吗?更改了我的答案以支持字段排除。至少有两种方法:通过应该写入数据库的字段名列表,或者您可以按类型筛选字段(我不喜欢这种方法)。
cursor.executve("INSERT INTO table (Q1,Q100) values (%s,%s)", (Question1, Question100))
written_fields = [f for f in form if f.id in WRITE_TO_SQL_FIELDS]
cursor.execute(
    "INSERT INTO table ({}) values ({})".format(
        ",".join(f.id for f in written_fields),
        ",".join(str(f.data) for f in written_fields),
    )
)
BLACKLISTED_TYPES = (wtforms.FieldList, wtforms.Formfield, wtforms.HiddenField)
written_fields = [f for f in form if not isinstance(f, BLACKLISTED_TYPES)]