Flask连接数据库

目录

 

导入相应包

创建接口

基于上述db对象创建一个Student

添加信息

显示学生信息

修改与删除信息


 

导入相应包

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

创建接口

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/studentinfo?charset=utf8'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True # 这一行如果不添加,程序会报警告。
db= SQLAlchemy(app)

基于上述db对象创建一个Student

class Student(db.Model):
     id     = db.Column(db.Integer, primary_key = True)
     name   = db.Column(db.String(100))
     sex = db.Column(db.String(100))
     studentId = db.Column(db.String(100))
     chinese = db.Column(db.String(200))
     math   = db.Column(db.String(100))
     english = db.Column(db.String(100))
     def __init__(self, name, sex, studentId, chinese, math, english): # __init__方法负责对象的初始化
         self.name = name
         self.sex = sex
         self.studentId = studentId
         self.chinese = chinese
         self.math = math
         self.english = english
​
db.create_all() # 将上述类映射到数据库中:
​

添加信息

html页面




    
    学生信息


    

学生信息添加界面

将表单的action直接指向当前路径,这就要求在当前路径所对应的函数中,对POST数据进行处理:

@app.route('/newstudent/', methods = ['GET', 'POST'])
def newstudent():
    if request.method == 'POST':
        if request.form['name'] and request.form['studentId'] and request.form['sex'] and request.form['chinese'] and request.form['math'] and request.form['english']:
            curuser = Student(request.form['name'], request.form['studentId'], request.form['sex'], request.form['chinese'], request.form['math'], request.form['english'])
            db.session.add(curuser)
            db.session.commit()
            return redirect(url_for('AllStudent'))
    return render_template('info.html')
​

显示学生信息

html页面




     
    学生信息列表


    

学生信息列表

新建 (增加学生)

​ {% for student in students %} {% endfor %} ​
姓名 学号 性别 语文 数学 英语
{{ student.name }} {{ student.studentId }} {{ student.sex }} {{ student.chinese }} {{ student.math }} {{ student.english }}

添加路由

@app.route('/allstudent/')
def AllStudent():
   return render_template('allinfo.html', students = Student.query.all() )

修改与删除信息

html页面如下




     
    学生信息列表


    

学生信息列表

新建 (增加学生)

​ {% for student in students %} ​ {% endfor %} ​
姓名 学号 性别 语文 数学 英语 操作
{{ student.name }} {{ student.studentId }} {{ student.sex }} {{ student.chinese }} {{ student.math }} {{ student.english }} 修改  删除

修改代码如下

@app.route('/modifystudent//', methods = ['GET', 'POST'])
def modifystudent(studentid):
     curuser = db.session.query(Student).filter_by(id=studentid).one()
     if request.method == 'POST':
         if request.form['studentId'] and request.form['sex'] and request.form['chinese'] and  request.form['math'] and request.form['english']:
             curuser.studentId   = request.form['studentId']
             curuser.sex = request.form['sex']
             curuser.chinese = request.form['chinese']
             curuser.math = request.form['math']
             curuser.english = request.form['english']
             db.session.commit()
             return redirect(url_for('AllStudent'))
     return render_template('modifyinfo.html', curuser=curuser)

删除代码如下

@app.route('/deleteuser//')
def deletestudent(studentid):
     db.session.query(Student).filter_by(id=studentid).delete()
     db.session.commit()
     return redirect(url_for('AllStudent'))

 

 

你可能感兴趣的:(Flask,flask,数据库,python)