Python 绑定参数时出错';3';使用wtforms,mysqlalchemy和烧瓶

Python 绑定参数时出错';3';使用wtforms,mysqlalchemy和烧瓶,python,flask,flask-sqlalchemy,wtforms,Python,Flask,Flask Sqlalchemy,Wtforms,这是我在这里的第一篇帖子!使用返回“binding parameter”3错误的SelectMultipleField条目处理表单条目 在forms.py中: class MultiCheckboxField(SelectMultipleField): widget = widgets.ListWidget(prefix_label=False) option_widget = widgets.CheckboxInput() class SWProductForm(FlaskF

这是我在这里的第一篇帖子!使用返回“binding parameter”3错误的SelectMultipleField条目处理表单条目

在forms.py中:

class MultiCheckboxField(SelectMultipleField):
    widget = widgets.ListWidget(prefix_label=False)
    option_widget = widgets.CheckboxInput()

class SWProductForm(FlaskForm):
    string_of_files = [
    'genomics', 'mapping', 'identification', 'analytics', 'statistics', 'NDVI', 'imagery', 'testing', 'marketing', 'supplychain', 'irrigation'
    ]
    files = [(x, x) for x in string_of_files]

sw_categories = MultiCheckboxField(
        'Category', 
        choices=files,
        validators=[DataRequired()] 
    )
在models.py中:

class SWProducts(db.Model):
    sw_categories = db.Column(
        db.String,
        index=False,
        unique=False,
        nullable=False
    )

   def __init__(self, sw_categories):
        self.sw_categories = sw_categories
在routes.py中:

@home_bp.route('/ag-software-entry', methods=['GET', 'POST'])
def ag_software_entry():
    form = SWProductForm()
if request.method == 'POST':
        if form.is_submitted():
            print ("submitted")
        if form.validate():
            print ("valid")
        print(form.errors)
        if form.validate_on_submit():
            # Get Form Fields
            sw_categories = form.sw_categories.data

            sw_products = SWProducts(
                sw_categories = form.sw_categories.data,             
                )

            db.session.add(sw_products)
            db.session.commit()
            flash('Record was successfully added')

            return render_template(
                'software_entry.html',
                sw_products=sw_products
                )
        else:
            print("bad")
    return render_template('add_new_agtech_sw.html', form=form)
html/jinja:

  <fieldset class="form-field">
      {{ form.sw_categories.label }}
      <br />
      {{ form.sw_categories }}
      {% if form.sw_categories.errors %}
      <ul class="errors">
        {% for error in form.sw_categories.errors %}
          <li>{{ error }}</li>
        {% endfor %}
      </ul>
      {% endif %}
    </fieldset>

{{form.sw_categories.label}

{{form.sw_categories} {%if form.sw_categories.errors%}
    {form.sw_categories.errors%}中的错误为%
  • {{error}}
  • {%endfor%}
{%endif%}
完整的错误是:sqlalchemy.exc.InterfaceError:(sqlite3.InterfaceError)绑定参数3时出错-可能是不支持的类型。 [SQL:在软件产品(软件公司名称、软件公司产品、软件软件组件、软件类别、软件产品描述、软件产品img、软件操作系统许可证、软件参考、软件位置描述、软件位置img)中插入值(?,,,,,,,,,)] [参数:('Software Company'、'Software Product'、'Software ELement'、['mapping'、'statistics'、'NDVI']、'Product Desc'、'Screen_Shot_2021-03-20_at_11.35.51_AM.png'、'OS License'、'SW References'、'SW Location'、'Screen_Shot__2021-03-20_at_at_11.35.51_AM.png')] (此错误的背景信息位于:)


在添加复选框选项之前,我取出了其他字段条目。

好的,所以我找到了解决方案。这是在路由中使用联接方法的问题:

   sw_categories = ', '.join(form.sw_categories.data)