Flas中的Sqlite插入

2024-06-23 03:29:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含一些Python代码和html模板的html模板。以下是示例。

Python:

cur1 = g.db.execute('select ID from Students')
students = [dict(ID=row[0]) for row in cur1.fetchall()]
cur2 = g.db.execute('select ID from Quizzes')
quizzes = [dict(ID=row[0]) for row in cur2.fetchall()]
if request.method == 'POST':
    if not session.get('logged_in'):
        abort(401)
    g.db.execute('insert into Results (quiz,student,grade) values '\
                 '(?,?,?)',[request.form['Quiz'],
                            request.form['Student'],
                            request.form['grade']])
    g.db.commit()
    return render_template('add_result.html',students=students,quizzes=quizzes)

HTML格式:

^{pr2}$

它以我想要的格式(整数)输出下拉列表,但是,例如,假设值quist#1和student#1,成绩为100,然后将它们输入到SQLite中,如下所示:

(2, u"{'ID': 1}", u"{'ID': 1}", 100.0)

我怎样才能得到这个输出?公司名称:

(2,1,1,100.0)


Tags: infromform模板idexecutedbrequest
2条回答

在将值发送到数据库之前,需要将这些值转换为正确的类型。request.formdict提供了一个^{}方法,该方法将转换值或引发错误。在

g.db.execute(
    'insert into Results (quiz,student,grade) values (?,?,?)',
    (
        request.form.get('Quiz', type=int),
        request.form.get('Student', type=int),
        request.form.get('grade', type=float)
    )
)

从长远来看,使用Flask-WTF这样的表单库来为您解析、转换和验证数据会更容易(也更安全)。还要考虑使用ORM,比如Flask-SQLAlchemy,而不是编写原始的SQL语句。在

问题出在HTML中:

<select name="Quiz">
    {% for quiz in quizzes %}
    <option value="{{ quiz }}">{{ quiz.ID }}</option>
    {% endfor %}
  </select>
  <select name="Student">
    {% for student in students %}
    <option value="{{ student }}">{{ student.ID }}</option>
    {% endfor %}

我把“测验”和“学生”作为s,用测验.ID以及学生号在值中显示为文本。它是表单返回的选项值。在

它应该是:

^{pr2}$

相关问题 更多 >

    热门问题