Flask连接数据库

这篇具有很好参考价值的文章主要介绍了Flask连接数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 文章来源地址https://www.toymoban.com/news/detail-554501.html

导入相应包

创建接口

基于上述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页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>学生信息</title>
</head>
<body>
    <h1>学生信息添加界面</h1>
     <form action = "{{ request.path }}" method = "post">
        <p><label for="name">姓名:</label><input type="text" name="name"></p>
        <p><label for="studentId">学号:</label><input type="text" name="studentId"></p>
        <p><label for="sex">性别</label><input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女</p>
        <p><label for="chinese">语文</label><input type="number" name="chinese"></p>
        <p><label for="math">数学</label><input type="number" name="math"></p>
        <p><label for="english">英语</label><input type="number" name="english"></p>
        <input type="submit" name="" value="添加">
    </form>
</body>
</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页面

<!DOCTYPE html>
<html>
<head>
     <meta charset="UTF-8">
    <title>学生信息列表</title>
</head>
<body>
    <h1>学生信息列表</h1>
     <h3>新建 (<a href = "{{ url_for('newstudent') }}">增加学生</a>)</h3>
    <table border="1">
        <thead>
          <tr>
            <th>姓名</th>
            <th>学号</th>
            <th>性别</th>
            <th>语文</th>
            <th>数学</th>
            <th>英语</th>
​
          </tr>
        </thead>
        <tbody>
         {% for student in students %}
          <tr>
            <td>{{ student.name }}</td>
            <td>{{ student.studentId }} </td>
            <td> {{ student.sex }} </td>
            <td>{{ student.chinese }} </td>
            <td> {{ student.math }} </td>
            <td>{{ student.english }} </td>
          </tr>
         {% endfor %}
​
        </tbody>
    </table>
</body>
</html>

添加路由

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

修改与删除信息

html页面如下

<!DOCTYPE html>
<html>
<head>
     <meta charset="UTF-8">
    <title>学生信息列表</title>
</head>
<body>
    <h1>学生信息列表</h1>
     <h3>新建 (<a href = "{{ url_for('newstudent') }}">增加学生</a>)</h3>
    <table border="1">
        <thead>
          <tr>
            <th>姓名</th>
            <th>学号</th>
            <th>性别</th>
            <th>语文</th>
            <th>数学</th>
            <th>英语</th>
              <th>操作</th>
​
          </tr>
        </thead>
        <tbody>
         {% for student in students %}
          <tr>
            <td>{{ student.name }}</td>
            <td>{{ student.studentId }} </td>
            <td> {{ student.sex }} </td>
            <td>{{ student.chinese }} </td>
            <td> {{ student.math }} </td>
            <td>{{ student.english }} </td>
              <td><a href = "{{ url_for('modifystudent', studentid=student.id) }}">修改</a>&nbsp;&nbsp;<a href = "{{ url_for('deletestudent', studentid=student.id) }}">删除</a></td>
​
          </tr>
         {% endfor %}
​
        </tbody>
    </table>
</body>
</html>

修改代码如下

@app.route('/modifystudent/<studentid>/', 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/<studentid>/')
def deletestudent(studentid):
     db.session.query(Student).filter_by(id=studentid).delete()
     db.session.commit()
     return redirect(url_for('AllStudent'))

 

 

到了这里,关于Flask连接数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flask-sqlalchemy连接数据库

    1、安装flask_sqlalchemy和pymysql包 2、进行配置 使用Flask-SQLAlchemy扩展操作数据库,首先需要通过URL建立数据库连接,必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI中。 其中HOSTNAME为路由地址 PORT为端口号,我在创建数据库时没有更改,所以用的默认的3306端口号 DATABASE为数据库名字

    2024年02月06日
    浏览(50)
  • Flask 数据库 连接池、DBUtils、http 连接池

    DBUtils 是一套用于管理 数据库 \\\" 连接池 \\\" 的Python包,为 \\\"高频度、高并发\\\"  的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放。 并允许对非线程安全的数据库接口进行线程安全包装和连接。 该连接可在各种多线程环境中使用。 使用场景:如果使用的是流行

    2024年02月04日
    浏览(28)
  • flask-session、数据库连接池

    flask 自带session---》以cookie的形式放到了浏览器中---》加密 真正的session,是在服务端存储     -django中存在djangosession表中     -flask中,使用第三方,保存在---》redis中---》flask-session 使用步骤 高版本的flask出现一个问题:         用高版本:在app中放一个参数  app.sessio

    2024年02月14日
    浏览(24)
  • python Flask项目使用SQLalchemy连接数据库时,出现RuntimeError:Working outside of application context.的解决过程记录

    在使用python的Flask框架跟着教程编写项目时,我跟着教程使用了三个文件来组织,分别是main.py(主程序),module.py(数据库模型),controller.py(蓝图模块程序,用Blueprint衔接) 在主程序中,创建app、SQLalchemy实例对象db并将二者绑定 在module.py中,导入主程序中的db和app,创建

    2024年02月09日
    浏览(36)
  • (二十七)Flask之数据库连接池DBUtils库

    🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥 本文已收录于Flask框架从入门到实战专栏 :《Flask框架从入门到实战》 🔥🔥 热门专栏推荐 :《Python全栈系列教程》、《爬虫从入门到精通系列

    2024年04月13日
    浏览(29)
  • 大白话说Python+Flask入门(六)Flask SQLAlchemy操作mysql数据库

    这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟falsk系列说再见的时候,真没什么好神秘的,就是个数据库操作,就大家都知道的 CRUD 吧。 1、Flask SQLAlchemy简介 Flask SQLAlchemy 是基于 Flask web 框架和 SQLAlchemy ORM (对象关系映射)的工具。它旨在为 Flask web 应用

    2024年02月05日
    浏览(49)
  • Python(Web时代)—— Flask的数据库操作

    SQLAlchamy  是 Python 中一个通过 ORM 操作数据库的框架 SQLAlchemy(对象关系映射器)提供了一种方法,用于将用户定义的Python类与数据库表相关联,并将这些类(对象)的实例与其对应表中的行相关联。 简单理解:   创建一个类,一个类对应了一个数据库中的一张表,类的属性

    2024年01月22日
    浏览(30)
  • Python Flask Web开发二:数据库创建和使用

    数据库在 Web 开发中起着至关重要的作用。它不仅提供了数据的持久化存储和管理功能,还支持数据的关联和连接,保证数据的一致性和安全性。通过合理地设计和使用数据库,开发人员可以构建强大、可靠的 Web 应用程序,满足用户的需求。这里介绍:SQLAlchemy 安装pymysql和

    2024年02月10日
    浏览(41)
  • 【python】flask操作数据库工具SQLAlchemy,详细用法和应用实战

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,

    2024年04月17日
    浏览(35)
  • python使用flask实现前后端分离&通过前端修改数据库数据【全栈开发基础】

    完整代码放到了最后,时间紧张的话直接拉到最后或点击目录【🥩 完整代码】看完整代码 这里先提一下,我们运行后端代码之前需要先建立一个名字为 python 的数据库,而后在该数据库下创建表 userinfo ,因为看到有的朋友后端代码拿过去后会运行不起来或者就是直接报错了

    2023年04月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包