【Vue+FastAPI+MySQL的迷你Demo】

Vue+FastAPI+MySQL的迷你Demo

主要思路:监听用户名的输入值变化并调用api查询数据库,
如果用户名已存在则返回false   
注意事项:网上很多装各种软件的教程,在这里就不赘述了。
vue.js要使用网盘里那个,因为方便。MySQL和fastapi跑的是默认端口,GoLive不知道是不是默认的5000,如果不是就改一下user.py里面的返回头吧,不然会有跨域问题。
SQL文件的使用就自己下一个DataGrip,按照教程连接再导入就行,新建数据库的那几条语句就不在文章里写了,如果后续有需要可以评论,我再详细教吧
vue-2.6.12.js:
链接:https://pan.baidu.com/s/1Rq_eFx8AFfJV3UwYYWe_zQ?pwd=1234 
提取码:1234 

项目目录:

Demo:.
  |–api
       |–user.py
  |–lib
       |–vue-2.6.12.js
  |–sql
       |–test.sql
  |–demo.html

所需软件:

  • VSCode
    安装 LiveServer 插件
  • Anaconda
    创建WebAPI虚拟环境,并安装FastAPI[all]
  • MySQL
    创建一名为test的database

前端页面部分

按照上述创建目录结构,并把vue**.js放入。

注意,在跑前端的时候要点击VSC右下角的GoLive!

前端代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demo</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                username: 'hq',
            },
            watch: {
                username(newValue, oldValue) {
                    const xhr = new XMLHttpRequest();
                    xhr.onreadystatechange = function () {
                        if(xhr.readyState == 4 && xhr.status == 200) {
                            const res = JSON.parse(xhr.responseText);
                            if (res.exit) {
                                console.log("已存在");
                            } else {
                                console.log("未存在");
                            }
                        }
                    };
                    xhr.open("get", "http://localhost:8000/test/?un=" + this.username, true);
                    xhr.send();
                },
            },
        });
    </script>
</body>
</html>

后端python部分

conda activate WebAPI  
cd api
uvicorn user:app --reload

后端代码如下:

from fastapi import FastAPI, Query, Response

import pymysql

cur = pymysql.connect(host="localhost", user="root", password="自己的密码", database="test", charset="GBK").cursor()
cur.execute("select username from user")
usernames = cur.fetchall()
cur.close()

pymysql.connect(host="localhost", user="root", password="自己的密码", database="heima-vue2-vue3-study", charset="GBK").close()

app = FastAPI()

@app.get("/test/")
async def root(response: Response, un=Query(None)):
    response.headers["Access-Control-Allow-Origin"] = 'http://localhost:5500'
    exit = False
    for username in usernames:
        if(un == username[0]):
            exit = True
            break
    return {
        "exit": exit,
    };

数据库部分

SQL代码如下:

create table user(
  id int,
  username varchar(40)
);
alter table user character set GBK;
insert into user(id,username) values(1,'h');
insert into user(id,username) values(2,'jh');
insert into user(id,username) values(3,'kf');
insert into user(id,username) values(4,'ld');
insert into user(id,username) values(5,'nx');
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糠帅傅蓝烧牛肉面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值