高效地将wtform提交到mysql

vpfxa7rd  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(720)

我有一个长长的表格:

Question1 = TextAreaField('What is your name?')
...
Question100=TextAreaField('Describe your role')

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

Question1=form.Question1.data
..
Question100=form.Question100.data

然后我使用sql将数据写入数据库。

cursor.executve("INSERT INTO table (Q1,Q100) values (%s,%s)", (Question1, Question100))

sql注入不是问题,我不希望使用sqlalchemy。有没有更有效的方法?
编辑:假设某些字段类型是FieldList、formfields或hiddenfields。我怎样才能把这些写进table里?我怎么能在循环中跳过它们呢?

bwntbbo3

bwntbbo31#

快速易读的解决方案

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)]

相关问题