存储在列表中的数据对于flas中的另一个MYSQL查询不可访问

2024-04-25 01:40:30 发布

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

我希望从表单发送的数据可以进行查询,根据输入的姓名获取4名学生的StudentID。 在此之后,我想将所有这些StudentID存储在另一个表中,该表有4列,分别为Student1、Student2、Student3、Student4。每列存储每个学生的id

我对烧瓶还不熟悉,我的方法可能是完全错误的。欢迎提出任何建议。 我怀疑我是否可以使用多个游标。也可以为每个函数执行命令

这是我的密码:

@app.route("/group", methods = ['POST', 'GET'])
def group():
cnx = mysql.connector.connect(user='root', password='somepassword', database ='somedatabase')
cursor = cnx.cursor(buffered = True)

stud1 = request.form.get('student1')
stud2 = request.form.get('student2')
stud3 = request.form.get('student3')
stud4 = request.form.get('student4')
# stud1 to stud 4 store the names of four student

query = (" SELECT StudentID FROM Students "
    " WHERE Name = '%s' OR Name = '%s' OR Name = '%s' OR Name = '%s'" %(stud1,stud2,stud3,stud4))
cursor.execute(query)

data1 = cursor.fetchall()
# data1 as tuple contains all the 4 studentID 
mylist = []
for row in data1:
    mylist.append(' '.join(str(x) for x in row))

# mylist is used to get the values stored in data1 in proper format

_query = (" INSERT INTO Groups(Student1, Student2, Student3, Student4)"
    " VALUES ( %s, %s, %s, %s )", (mylist[0],mylist[1], mylist[2],mylist[3]))

# here is my problem, the error i get is, list index out of range

cursor.execute(_query)
cursor.commit()
cursor.close()
cnx.close()
return render_template('forms.html')

根据这个错误,这意味着mylist是空的,但是如果我跳过第二个查询,只将结果存储在mylist中并打印,它就会工作。 对于第二个查询,我尝试将值存储为字典,但没有任何帮助

_query = (" INSERT INTO Groups(Student1, Student2, Student3, Student4)"
        " VALUES ( %(st1)s, %(st2)s, %(st3)s, %(st4)s )")
     data_query = {
     'st1' : mylist[0],
     'st2' : mylist[1],
     'st3' : mylist[2],
     'st4' : mylist[3]
     }
     cursor.execute(_query,data_query)

我的html代码:

<form method ="post" action = "/group">
    <label>Student1:</label>
    <input type="text" name="student1">
    <label>Student2:</label>
    <input type="text" name="student2">
    <label>Student3:</label>
    <input type="text" name="student3">
    <label>Student4:</label>
    <input type="text" name="student4">
    <input type="submit" value ="submit">
</form>

Tags: thenameforminputgetrequesttypequery