Python 绑定参数时出错';3';使用wtforms,mysqlalchemy和烧瓶
这是我在这里的第一篇帖子!使用返回“binding parameter”3错误的SelectMultipleField条目处理表单条目 在forms.py中: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
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)