flask + pymysql操作Mysql数据库的实例

下面是使用 Flask 和 PyMySQL 操作 MySQL 数据库的完整攻略,包含两条示例说明。

安装 PyMySQL

使用 PyMySQL 操作 MySQL 数据库需要先安装 PyMySQL 库,可以通过以下命令在命令行中安装:

pip install pymysql

创建 Flask 应用

首先,需要创建一个 Flask 应用。可以通过以下代码创建一个最基本的 Flask 应用。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

运行该应用,可以在本地测试服务器上看到一个简单的文字“Hello, World!”。

if __name__ == '__main__':
    app.run()

连接 MySQL 数据库

在 Flask 应用中连接 MySQL 数据库,需要先设置好数据库连接信息。可以在应用配置文件中定义这些信息。

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'mydb'

连接 MySQL 数据库可以通过 PyMySQL 库实现。

import pymysql

@app.before_request
def before_request():
    g.db = pymysql.connect(
        host=app.config['MYSQL_HOST'], 
        user=app.config['MYSQL_USER'], 
        password=app.config['MYSQL_PASSWORD'], 
        db=app.config['MYSQL_DB'],
        cursorclass=pymysql.cursors.DictCursor)

在每个请求被处理之前,before_request 函数会被调用,连接到 MySQL 数据库,并将数据库对象保存在 Flask 应用实例的全局 g 对象中。

注意,在连接 MySQL 数据库时,需要指定 cursorclass 为 DictCursor,这样可以返回的查询结果为 Python 字典类型,更易读取。

在请求处理完成之后,需要关闭数据库连接,可以通过以下代码实现。

@app.teardown_request
def teardown_request(exception):
    db = getattr(g, 'db', None)
    if db is not None:
        db.close()

示例一:插入数据

以下是一个使用 Flask 和 PyMySQL 插入数据到 MySQL 数据库的示例。

@app.route('/add', methods=['POST'])
def add_data():
    if request.method == 'POST':
        name = request.form['name']
        age = request.form['age']
        try:
            cursor = g.db.cursor()
            sql = "INSERT INTO `users` (`name`, `age`) VALUES (%s, %s)"
            cursor.execute(sql, (name, age))
            g.db.commit()
            return 'Data inserted successfully!'
        except Exception as e:
            print(e)
            g.db.rollback()
            return 'Error occurred while inserting data.'

插入数据时,首先获取表单中提交的数据,然后执行 SQL 语句,插入到 MySQL 数据库中。

示例二:查询数据

以下是一个使用 Flask 和 PyMySQL 查询数据从 MySQL 数据库中的示例。

@app.route('/list')
def list_data():
    try:
        cursor = g.db.cursor()
        cursor.execute("SELECT * FROM `users`")
        results = cursor.fetchall()
        return render_template('list.html', results=results)
    except Exception as e:
        print(e)
        return 'Error occurred while fetching data.'

查询数据时,执行 SELECT 语句,获取所有数据,将查询结果传递到 HTML 模板中渲染展示。

总结

通过上述两个示例,我们学习了使用 Flask 和 PyMySQL 操作 MySQL 数据库的基本操作,包括配置和连接数据库、插入数据、查询数据。这些操作可以进一步扩展获取、更新和删除等功能的开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask + pymysql操作Mysql数据库的实例 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • flask应用部署到服务器的方法

    将一个 Flask 应用程序部署到服务器需要经过以下步骤: 准备服务器 首先,需要一台运行 Linux 的服务器。推荐使用 Ubuntu 或 CentOS 等流行的 Linux 发行版,并进行更新。 安装 Flask 要在服务器上运行 Flask 应用,需要在服务器上安装 Flask。可以使用 pip 来安装 Flask: $ sudo pip instal…

    Flask 2023年5月15日
    00
  • Python+ Flask实现Mock Server详情

    下面是Python + Flask实现Mock Server的完整攻略: 1. 什么是Mock Server Mock Server是指一个虚拟的服务端,用于模拟实际的服务端行为以便进行测试和开发。通过构建Mock Server,我们可以在没有实际服务端的情况下进行开发和测试,从而提高开发效率。 2. Flask框架简介 Flask是一个轻量级的Web框架,…

    Flask 2023年5月15日
    00
  • Flask response 对象详情

    Flask框架中的response对象是HTTP响应的一部分,它代表了服务器返回给客户端的的数据。在Flask中,response对象包含响应体、HTTP状态码、消息头等信息。让我们来仔细了解Flask response对象的详细内容。 响应体 响应体指的是返回给客户端的实际数据。可以通过app.route()装饰器的返回值来设置响应体。响应体可以是字符串,…

    Flask 2023年5月16日
    00
  • Flask框架 CSRF 保护实现方法详解

    这是一篇讲解如何在 Flask 框架中实现 CSRF 保护的完整攻略。 什么是 CSRF? CSRF(Cross-site request forgery)是一种攻击技术,攻击者通过伪造一个请求,让用户在未意识到的情况下执行某些操作,比如更改密码、删除数据等。这种攻击方式常常被用于钓鱼、盗取用户信息等恶意行为。 如何在 Flask 中进行 CSRF 保护? …

    Flask 2023年5月15日
    00
  • go-cqhttp权限管理系统的实现代码

    Go-CQHTTP是一个开源的机器人框架,它支持大部分的跨语言插件、多种数据源及事件驱动的机器人开发方案。其中,权限系统是Go-CQHTTP中的一个非常重要的组成部分,这个系统决定了每个用户在机器人中的权限等级及可执行的操作。 权限管理系统的实现代码 Go-CQHTTP使用bolt作为数据源存储权限数据,权限数据存储在bolt的文件中。在Go-CQHTTP启…

    Flask 2023年5月16日
    00
  • Python使用Flask框架同时上传多个文件的方法

    Python使用Flask框架同时上传多个文件的方法需要以下步骤: 1. 创建HTML表单 HTML表单需要添加enctype属性,值是multipart/form-data,表示表单数据同时包含文本和二进制数据(文件)。表单中使用input标签的type属性为file的元素来让用户选择需要上传的文件,如下所示: <form action="…

    Flask 2023年5月15日
    00
  • 深入理解python中的ThreadLocal

    深入理解Python中的ThreadLocal 什么是ThreadLocal ThreadLocal是Python中的threading模块提供的一种线程本地存储方式,它可以让每个线程都拥有独立的数据副本,保证了线程之间的数据互相隔离,不会相互干扰。 在多线程处理共享数据时,为了避免并发访问带来的问题,我们通常会采用锁的方式来保护共享数据。但是在使用Thre…

    Flask 2023年5月15日
    00
  • 在AngularJs中设置请求头信息(headers)的方法及不同方法的比较

    接下来我将详细讲解“在AngularJs中设置请求头信息(headers)的方法及不同方法的比较”。 一、背景 在前端开发过程中,经常需要向服务器请求数据,有时候需要在请求头(header)中添加一些信息,比如认证信息、token信息等等。AngularJs提供了多种方法来在请求头中设置信息,本文将详细介绍这些方法,并进行比较。 二、常用方法 1. $htt…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部