Flask连接MySQL数据库;编写接口解决乱码问题

372 阅读2分钟

一,在此之前先安装flask框架,以及pymysql插件

安装flask框架:    pip install Flask
安装pymysql插件:    pip install pymysql
创建虚拟环境:    python -m venv venv
激活虚拟环境:     venv\Scripts\activate 
启动程序之前先暴露文件(window系统):$env:FLASK_APP = "hello(文件名)" 
启动程序命令:    flask run
 
 
关闭虚拟环境:    deactivate

详细代码

#在此之前先安装flask框架,以及pymysql插件
from pymysql import Connection # Connection连接的对象
from flask import Flask
 
#1.建立连接
conn = Connection(
    host="localhost", #主机名(或IP地址)
    port=3306,        #端口号,默认3306
    user="root",      #数据账号名
    passwd="",        #数据库密码 (有则写入)
    charset="utf8"   #字符转换
)
# 打印MySql数据库软件信息 打印成功则数据库连接成功
#print(conn.get_server_info()) # 5.5.8-log
 
#从连接建立游标(有了游标才能操作数据库)
cur = conn.cursor()
#选择数据库
conn.select_db("czp")
#单独查询某一条语句
#cur.execute("select * from book where id=1")
cur.execute("select * from book")
#获取查询结果
result = cur.fetchall()
print("获取数据成功")
#准备存放所有数据的列表
bookslist=[] 
for row in result:
    #准备存放一个book的字典表
    bookinfo ={
        "id":row[0],
        "author":row[1],
        "binding":row[2],
        "category":row[3],
        "image":row[4],
        "isbn":row[5],
        "pages":row[6],
        "price":row[7],
        "pubdate":row[8],
        "publisher":row[9],
        "subtitle":row[10],
        "summary":row[11],
        "title":row[12],
        "translator":row[13]
    }
    #将字典表插入到booklist列表中
    bookslist.append(bookinfo)
    # print(bookinfo)
    # 查看列表长度
    #print(len(row))
 
conn.commit() #注意使用的conn 不是cur
# 关闭游标及连接
cur.close()
conn.close()
 
#给前端提供一个格式友好的字典
dict={
    "stattus":200,
    "data":bookslist,
    "msg":"获取全部的book成功"
}
 
 
app = Flask(__name__)
# 解决中文乱码的问题,将json数据内的中文正常显示
app.config['JSON_AS_ASCII'] = False
# 开启debug模式
app.config['DEBUG'] = True
@app.route('/')
 
 
def index():
    return dict

注意:返回的数据中文乱码问题

# 解决中文乱码的问题,将json数据内的中文正常显示
app.config['JSON_AS_ASCII'] = False
# 开启debug模式
app.config['DEBUG'] = True

加入以上代码,则如下图显示正常

image.png

不加代码则显示如下:

56161739a7a4c4b68ca37324b9fea547.png 二,数据库表的大概结构

9191b43bf49aa17689beea380e17babb.png 详细数据

f9d33fb13462d4e50fce8e00cf64efae.png

三,最后写成接口访问的结构是这个样子的

整体结构

cf5052f5123d35fdcf2fcc0eac383170.png

展开详细数据结构

b62e9a893d1bf1a50af0bbc3c8c3017a.png

以上部分是后端从数据库获取的数据,写成的接口

若想了解前端怎么跨域,axios封装实现调取接口并渲染页面,请点击此链接:juejin.cn/post/718692…