MySQL+Flask,在本地实现一个API接口。

Flask+mysql 实现增删改查接口开发+测试(图文教程附源码) 目录 一、前言 二、环境准备 2.1 安装python 2.2 安装mysql 三、工具准备 3.1 安装pycharm 3.2 安装Navicat 3.3 安装postman 四、mysql数据库准备 4.1 Navicat连接 4.2 数据库准备 五、增删改查接口(服务)开发 5.1 表的增删改查操作 5.2 增加接口服务 5.3 删除接口服务 5.4 修改接口服务 5.5 查询接口服务 六、接口测试 6.1 测试增加接口服务 6.2测试删除接口服务 ... 阅读详情

微信小程序中历史长河的数据,是通过调用一位大佬提供的API接口获得到的。

既然小F已经拥有了一台云服务器,所以就想自己来实现这个接口。

这样就不用担心大佬服务器过期,亦或接口发生变化。

首先本地调试一下,最后部署到服务器上。

毕竟服务器上各种环境各种头大,还是比较难搞的。

一步一个脚印慢慢来~

01 MySQL数据

MySQL老早就安装在我的Mac上了。

可视化工具则是使用「Sequel Pro」,一个小黄油桶。

对于8.0以上的MySQL版本,必须使用「Sequel Pro」的测试版,否则使用时会报错。

安装什么的就不说了,网上一大堆教程,这里记录一下数据的获取。

首先创建数据库。

import pymysql

db = pymysql.connect(host='127.0.0.1', user='root', password='20191126', port=3306)
cursor = db.cursor()
cursor.execute("CREATE DATABASE history DEFAULT CHARACTER SET utf8mb4")
db.close()

期间忘记了MySQL的密码,所以重置了一下。

网上也有教程,挺简单的。

然后创建表格。

import pymysql

db = pymysql.connect(host='127.0.0.1', user='root', password='20191126', port=3306, db='history')
cursor = db.cursor()
sql = 'CREATE TABLE IF NOT EXISTS messages (date VARCHAR(255) NOT NULL, id INT NOT NULL, title VARCHAR(255) NOT NULL, year VARCHAR(255) NOT NULL, year_num INT NOT NULL, PRIMARY KEY (id))'
cursor.execute(sql)
db.close()

最后数据爬取。

import requests
import operator
import pymysql
import json
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}

db = pymysql.connect(host='127.0.0.1', user='root', password='20191126', port=3306,  db='history', charset='utf8mb4')
cursor = db.cursor()


def to_mysql(data):
    """
    写入数据库
    """
    table = 'messages'
    keys = ', '.join(data.keys())
    values = ', '.join(['%s'] * len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys, values=values)
    update = ','.join([" {key} = %s".format(key=key) for key in data])
    sql += update
    try:
        if cursor.execute(sql, tuple(data.values())*2):
            print('Successful')
    except:
        print('Failed')
        db.rollback()
    db.commit()


# 每月 
for i in range(1, 13):
    time.sleep(10)
    # 每日
    for j in range(1, 31):
        url = 'http://www.jiahengfei.cn:33550/port/history?dispose=easy&key=jiahengfei&month=' + str(i) + '&day=' + str(j)
        response = requests.get(url=url, headers=headers)
        result = json.loads(response.text)
        list1 = []
        for k in result['data']:
            if len(k['title']) < 100:
                if int(k['year']) > 0:
                    item = {}
                    item['date'] = str(i) + '/' + str(j)
                    item['id'] = k['id']
                    item['title'] = k['title']
                    item['year'] = k['year'] + '年' + str(i) + '月' + str(i) + '号'
                    item['year_num'] = int(k['year'])
                    # print(item)
            list1.append(item)
        # 按照年份排序
        sorted_x = sorted(list1, key=operator.itemgetter('year_num'))
        for x in sorted_x:
            # print(x)
            to_mysql(x)

这里有一个对列表中的字典进行排序,使用到了「operator」这个库。

如此,历史长河中的数据就获取到了。

02 Flask接口

主要使用json、pymysql、flask这三个库。

Flask中连接MySQL数据库有好几种办法,这里采用pymysql连接。

import json
import pymysql
from flask import Flask, request
from pymysql.cursors import DictCursor

app = Flask(__name__)


# 只接受get方法访问
@app.route("/port/history/", methods=["GET"])
def check():
    # 默认返回内容
    return_dict = {'code': 1, 'result': False, 'msg': '请求成功'}
    # 判断入参是否为空
    if request.args is None:
        return_dict['return_code'] = '504'
        return_dict['return_info'] = '请求参数为空'
        return json.dumps(return_dict, ensure_ascii=False)
    # 获取传入的参数
    get_data = request.args.to_dict()
    month = get_data.get('month')
    day = get_data.get('day')
    date = str(month) + '/' + str(day)
    # 对参数进行操作
    return_dict['result'] = sql_result(date)
    return json.dumps(return_dict, ensure_ascii=False)


# 功能函数
def sql_result(date):
    conn = pymysql.connect(host='127.0.0.1', database='history', user='root', password='20191126')
    cursor = conn.cursor(DictCursor)
    cursor.execute("SELECT * FROM messages WHERE date= '%s'" % str(date))
    result = cursor.fetchall()
    conn.close()
    return result


if __name__ == "__main__":
    app.run(host='127.0.0.1', port=5000)

通过SQL语句查询,并获取全部结果。

运行程序,可以看见能够在本机上成功运行。

最后来看一下在浏览器上的情况。

成功请求,和大佬提供的接口数据所差无几。

接下来就是学习如何部署到服务器上啦。

近期十大热门:

由菜鸟学Python原班人马打造的公众号【程序员GitHub】,专注于分享GitHub上有趣的资源包括,Python,Java,Go语言前端学习等优质的学习资源,爆料程序员圈的新鲜趣事,热门干货,职场感悟,感兴趣的小伙伴可以来捧场!



点这里,进菜鸟学PythonB站大本营
MySQL + Python(Flask)构建树形结构接口 数据库:用递归CTE动态生成level,避免冗余存储Python接口:执行查询→处理字段→返回JSON前端:基于level和parentId渲染树形结构(扁平或嵌套)通过这种方式,前后端分工明确:数据库负责关系计算,后端负责格式转换,前端专注UI展示,确保接口高效且易于维护。 阅读详情

相关推荐

Python旅游数据分析平台:Flask后台+MySQL数据库+可视化图表+演示视频

直接运行就能看效果的旅游数据可视化分析工具,用Python写的,后端是Flask,数据存MySQL,自带travel_master.sql数据库脚本,包含景点热度、用户评论、地域分布、价格区间等常见旅游维度的清洗、统计和图表展示功能。包里有完整源码、初始化好的数据库文件、操作说明文档、部署步骤指南,还有MP4格式的功能演示视频,本地装好Python和MySQL就能启动,适合课程设计、毕设或小团队快速接入旅游数据分析模块。所有内容已整理进清晰目录:程序代码放在‘程序’文件夹,数据库脚本在根目录和‘数据库’文件

bb456的博客 178

在Flask中使用MySQL数据库

前面两章分别对mysql数据库进行了安装、flask的简单介绍,而本章将继续学习flask操作的mysql数据库。本章主要简单介绍了mysql在flask开发中作用,并简单的做了一个向数据库中提交用户信息的页面程序。 人间总有一两风,填我十万八千梦。 –2023-9-24 进阶篇。

2301_78630677的博客 3961

从OFED到rdma-core:手把手带你搞定Linux下RDMA开发环境的选型与搭建

本文详细介绍了在Linux系统下搭建RDMA开发环境的完整流程,涵盖OFED与rdma-core的选型对比及分步安装指南。针对高性能计算和分布式存储需求,解析RDMA技术栈的核心组件,提供环境验证与性能测试方法,帮助开发者快速构建稳定高效的开发环境。特别适合需要优化网络性能的工程师参考。

weixin_26905487的博客 226

flask_SQLAlchemy常用数据类型及列选项

SQLAlchemy常用数据类型: 1. Integer:整形,映射到数据库中是int类型。 2. Float:浮点类型,映射到数据库中是float类型。他占据的32位。 3. Double:双精度浮点类型,映射到数据库中是double类型,占据64位。 4. String:可变字符类型,映射到数据库中是varchar类型. 5. Boolean:布尔类型,映射到数据库中的是tinyint类型。 ...

m0_38076876的博客 863

SAP 人力资源工资配置项3---工资项配置

工资项设置

xiouluoyang的专栏 1万+

达梦数据库集群部署(主备)

达梦数据库集群部署(主备)

m0_71845127的博客 1462

flask操作MySQL

flask操作MySQL数据库

lose_user___的博客 3844

【Bug已解决】codex: debug 模式无输出 — CodeX CLI 调试模式不工作解决方案

CodeX CLI 开启 debug 模式后无输出/日志不打印的解决方案,含 debug 开关、日志级别、stderr 重定向与 IDE 日志面板。

一键难忘的博客 4165

【Flask&MySQL】Flask连接数据库MySQL(十)

本文详细介绍了flask连接MySQL的详细步骤,简介了部分flask中操作MySQL的包。

hold_on_qlc的博客 2万+

QGis二次开发 —— 2、第一个程序 - 加载栅格tif与矢量shp文件(附源码)

QGis二次开发 —— 2、第一个程序 - 加载栅格tif与矢量shp文件(附源码)

1100

YOLOv13改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 588

flask mysql api_MySQL+Flask,在本地实现一个API接口。

微信小程序中历史长河的数据,是通过调用一位大佬提供的API接口获得到的。既然小F已经拥有了一台云服务器,所以就想自己来实现这个接口。这样就不用担心大佬服务器过期,亦或接口发生变化。首先本地调试一下,最后部署到服务器上。毕竟服务器上各种环境各种头大,还是比较难搞的。一步一个脚印慢慢来~01MySQL数据MySQL老早就安装在我的Mac上了。可视化工具则是使用「Sequel Pro」,一个小黄油桶。...

weixin_39640767的博客 346

【电源专题】案例:对比不同电池在不同电流下的电池放电曲线

无

一点硬件 2843

Python 项目实战:用 Flask 实现 MySQL 数据库增删改查 API

本文围绕用 Flask 实现 MySQL 数据库增删改查(CRUD)API 展开,先介绍项目准备,包括 Flask、MySQL、PyMySQL 等技术栈选择,Python 3.6 + 的环境要求,以及 MySQL 数据库和用户表的创建;接着搭建项目结构,编写配置文件存储数据库连接信息;随后分别用 PyMySQL 原生操作和 Flask-SQLAlchemy(ORM 工具)两种方式开发 CRUD API,涵盖数据库连接、新增 / 查询 / 更新 / 删除用户的路由实现与逻辑处理。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 19万+

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 439

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python+Flask+Mysql搭建一个简单本地服务器及后台服务API接口

在开发过程中,难免要用到后台服务器进行数据的存取,使用Python Flask能快速搭建一个简单的本地后台服务,与本地Mysql进行数据交互。 项目目录: (创建如图红框的三个文件,路径可不同,只要最后能导入其余文件即可) config.py文件是用来进行mysql配置的,内容如下 # MySQL配置 MYSQL_HOST = "127.0.0.1" # 表示本地的地址 MYSQL_PORT = 3306 # 端口号 MYSQL_USER = "root" # mysql用户名(需自行修改!!

三水沁 7938

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

使用Flask在服务器实现一个API接口。

上一期说了如何在本地实现一个API接口。这一期就来说说如何在服务器上实现一个API接口。主要涉及到Python3、MySQL、Flask、Nginx、uwsgi这几个东西。首先来看一下小...

法纳斯特 1784

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

服务器部署api接口_使用Flask在服务器实现一个API接口。

上一期说了如何在本地实现一个API接口。这一期就来说说如何在服务器上实现一个API接口。主要涉及到Python3、MySQL、Flask、Nginx、uwsgi这几个东西。首先来看一下小F的成果,历史长河数据接口(https访问)。完美符合小程序的开发要求。https://www.fanasite.xyz:33550/port/history/?month=11&day=29(复...

weixin_29866423的博客 2459

centos部署python flask_使用Flask在服务器实现一个API接口。

上一期说了如何在本地实现一个API接口。这一期就来说说如何在服务器上实现一个API接口。主要涉及到Python3、MySQL、Flask、Nginx、uwsgi这几个东西。首先来看一下小F的成果,历史长河数据接口(https访问)。完美符合小程序的开发要求。https://www.fanasite.xyz:33550/port/history/?month=11&day=29(复...

weixin_39767322的博客 520

使用 Flask + Flask RESTful 快速搭建 API 服务

使用 Flask + Flask RESTful 搭建 API 应用并使用 Blueprint(蓝图) 管理 API;使用扩展实现 ORM 操作 MySQL 数据库;基于 JWT 验证实现注册、登录以及登出接口;实现一个最基本的列表获取接口;解决跨域问题;使用 Docker 部署该应用。在正式开始之前,请确保你已经安装了 Python,并且对 Python 有一定了解。

aobulaien001的博客 1584

flask restful mysql_使用Flask-Restful实现API接口

1. 代码结构:2. 具体代码2.1 user.pyfrom ApiRESTful.extensions import dbfrom werkzeug.security import generate_password_hash, check_password_hashclass User(db.Model):__tablename__ = 'users'id = db.Column(db.Int...

weixin_29924309的博客 576

简单的flask增删改查api接口编写

简单的flask增删改查api接口编写 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示

laoli815的博客 1983

Flask 与 MySQL 数据库集成:完整的 RESTful API 实现指南

我们将构建一个学生信息管理系统,提供完整的 CRUD(Create, Read, Update, Delete)操作接口。这个系统将包含学生基本信息的管理功能,并通过 RESTful API 提供服务。import re"""学生数据模型定义学生信息的数据库表结构"""# 主键字段# 学生基本信息字段comment='学号,唯一标识')name = db.Column(db.String(100), nullable=False, comment='学生姓名')

conkl的博客 918
上一篇: 微信拍一拍又升级!已经被网友玩坏…还有这4个新变化
下一篇: 告别刷抖音!30秒一个Python小例子,总有一款适合你
菜鸟学Python
博客等级 码龄9年 8086粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值