Mysql数据库基础

level0:复习SQL语言基础,并掌握它们的用法,从课程中掌握如何安装,和在python中连接使用数据库

level1:参照课上示例,编写一个用户服务系统,并部署到云服务器上

level0

直接用包管理命令安装mysql数据库

首先,su进入root权限,更新一下apt

1
apt update

接着是进行换源(默认源下载速度相对较慢),换成中科大源

然后将其复制粘贴进sources.list(记得先删掉里面原来的源)

1
vim /etc/apt/sources.list

接着执行

1
apt update

可以看到,已经换好源了

换好源后,接下来安装mysql数据库

1
apt install mysql-server

安装好后,运行mysql服务

1
service mysql start

发现没报错,代表成功了

在docker中使用数据库

首先需要我们装一下docker

1
sudo apt install docker.io

创建一个dockerfile文件,并写入

1
2
3
4
5
6
7
8
9
FROM mysql:5.7.25

ENV MYSQL_ALLOW_EMPTY_PASSWORD yes

COPY ./file /cmd

EXPOSE 3306

CMD bash /cmd/cmd.sh

接着创建一个file的文件夹,在文件夹里面创建cmd.sh和init.sql文件

在cmd.sh写入

在init.sql写入

接着以该目录为上下文开始构建镜像

1
docker build -t mysql:v1 . 

成功后,输入以下指令就可以运行了

1
docker run -d --name test1 -p 3906:3306 mysql:v1

在python中连接使用数据库

如果我们还没下载pymysql和模块的话,需要进行下载

1
pip install pymysql

我们要知道虚拟机的ip地址,输入以下指令查看虚拟机ip

1
ifconfig -a  

可以知道,这个虚拟机ip为192.168.183.128

接着按要求填好下面的python代码(pymysql)

然后运行看看,发现没有报错,显示user,这样就成功了

level1

编写一个用户服务系统

(这边我就不部署到云服务器了,我部署到了虚拟机ip192.168.183.128,端口号3906,部署在云服务器的方法应该跟这个差不多,由于上面已经建好了表,所以这边直接演示注册,登录,获取信息的功能)

首先运行下面的程序(这边我把课上展示的代码加了登录的验证),以实现注册,登录功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import pymysql
from flask import Flask,request

#定义mysql操作对象
conn = pymysql.connect(
host="192.168.183.128", # 数据库的ip地址
port=3906, # 数据库的端口号
user="root", # 登陆数据库的用户名
passwd="123456", # 登陆数据库的密码
db="test" # 要连接的数据库,必须提前创建好,否则会连接出错
)
cursor = conn.cursor()
cursor.execute("show tables")

app = Flask(__name__)

#实现注册用户的功能
@app.post('/register')
def register():
userid = request.args.get("userid", "")
name = request.args.get("username", "")
password = request.args.get("password", "")
question = request.args.get("question", "")
question_content = request.args.get("question_content", "")
info = (userid, name, password,question,question_content)
try:
cursor.execute("insert into user (id,username,password,question,question_content) value(%s,%s,%s,%s,%s)", info)
conn.commit()
return "注册成功,你的用户名是" + name
except Exception as e:
print(e)
return "注册出错了捏"

@app.get('/get_info')
def get_info():
username = request.args.get("username", "")
cursor.execute("select * from user where username=%s", username)
conn.commit()
result = cursor.fetchone()
print(list(result))
return {"data": list(result)}

# 实现登录验证的功能
@app.route("/login", methods=["POST"])
def login():
username = request.form.get("username", "")
password = request.form.get("password", "")
cursor.execute("select * from user where username=%s and password=%s", (username, password))
conn.commit()
result = cursor.fetchone()
if result is None:
return "用户名或密码错误"
else:
return "登录成功"

if __name__ == '__main__':
print(app.url_map)
app.run(host='0.0.0.0', port=5000)

这边按要求填好后,运行,可以看到运行成功了

接下来就是我们测试注册、登录和获取信息的代码了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests

# 注册测试
#url = 'http://127.0.0.1:5000/register'
#params = {"userid": "154", "username": "ikun3", "password": "123456", "question": "名字叫什么", "question_content": "cxk"}
#result = requests.post(url, params=params)
#print(result.text)

#获取信息
#url = 'http://127.0.0.1:5000/get_info'
#params = {"username": "ikun3"}
#result = requests.get(url, params)
#print(result.json())

# 登录测试
#url = "http://localhost:5000/login"
#data = {"username": "ikun3", "password": "123456"}
#response = requests.post(url, data=data)
#print(response.text)

先进行注册测试,将注册测试那部分的#去掉,发现注册成功(由于userid :154 ikun3 之前测试的时候注册过了,导致再次注册时出错,而且没有截图,因此,这里用153 ikun4 来测试注册,发现成功!)

接着获取信息(这里ikun3和ikun4都能获取到信息)

最后,进行登录验证(同理ikun3和ikun4 若密码正确就可以)

密码为123456时(正确)

密码为123457时(错误)

到这里就大功告成了!


Mysql数据库基础
https://www.supersmallblack.cn/Mysql数据库基础.html
作者
Small Black
发布于
2022年12月17日
许可协议