Я использую QuerySelectField с SQLAlchemy и WTForms, чтобы выбрать опцию из базы данных.Я хотел выбрать опцию и затем сохранить этот выбор или ссылку на этот выбор в новом столбце, но я получаю ошибку.
sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Ошибка привязки параметра 1 - возможно, неподдерживаемый тип.[SQL: INSERT INTO choice (risk_level, opts, urls_affered) VALUES (?,?,?)] [Parameters: ('low',, aaa ')]] (фон этой ошибки: http://sqlalche.me/e/rvf5)
Я думаю, что ошибка в том, что мне не хватает обработки шага между выбором моей опции и добавлением ее в базу данных, и выбор не является строкой, как указано в модели БД?
def choose_finding():
return Finding.query
class SelectForm(FlaskForm):
risk_level = SelectField('Risk Level',choices=[('low','Low Risk'), ('medium','Medium Risk'),
('high','High Risk'), ('severe','Severe Risk')],validators=[DataRequired()])
urls_affected = TextField('URLs Affected',validators=[DataRequired()], widget=TextArea())
opts = QuerySelectField('Choose Finding',query_factory=choose_finding, get_label='finding_name')
submit = SubmitField('Submit')
class Choice(db.Model):
id = db.Column(db.Integer, primary_key=True)
risk_level = db.Column(db.String(40), nullable=False)
opts = db.Column(db.String(250), nullable=False)
urls_affected = db.Column(db.Text, nullable=False)
@app.route("/select_findings", methods=['GET','POST'])
def select_findings():
form = SelectForm()
if form.validate_on_submit():
finding_choice=Choice(risk_level=form.risk_level.data,
opts=form.opts.data, urls_affected=form.urls_affected.data)
db.session.add(finding_choice)
db.session.commit()
flash('Finding added to report','success')
return redirect(url_for('select_findings'))
return render_template('select_findings.html', title='Select Findings', form=form)