引言
也是好几天没更新了,主要是因为前几天因为电脑注册表丢失,导致我下载文件出现异常,很多方法都试过了,都没有用,所以我准备买个U盘重装系统,结果最尴尬的是我不会。最后听取我网上一个朋友的建议,进行回复系统出厂设置,结果还是不行,最后在网上找到一个神器----DirectX强力修复,我用它直接扫描以后,一键恢复,美中不足的是他是收费的,58永久,我想着用不了几次,就开了半年的28(最少开半年),接下来进行今天的python基础学习吧,今天学习的是python连接数据库。
1.python执行数据库流程
之前在做开发的时候,对于数据库操作,首先要对数据库进行连接,获取到连接的对象,连接对象在语句执行平台执行sql语句,然后得到数据库的响应,包括增上改查。对于python执行数据库流程也是一样的
2.安装mysql
3.1 安装MySql
这个在网上有很多教程,我在这里安装的是mysql5.7,具体帖子可以看mysql5.7安装
安装包可以直接在官网上面薅。怎么找在上面一个帖子已经介绍过了
![](https://i-blog.csdnimg.cn/direct/ff32b6a8466441a79c45ed3b88e0220a.png)
3.2 设置环境变量
安装完成之后,默认路径肯定是“C:\Program Files\MySQL Server 8.0\bin”。新建一个环境变量,写入路径。在这里先创建一个MYSQL_HOME放入mysql的默认路径。在path里面配置环境变量
%MYSQL_HOME%
%MYSQL_HOME%/bin
3.3 启动MySql
使用以下两个命令:
net start mysql # 启动mysql服务器
mysql -u root -p # 进入MySQL服务器,需要输入密码
注意输入以上两个命令,需要管理员权限。
3.4 使用navicat for mysql 管理软件
我听说先数据库可视化工具navicat已经免费了,大家可以直接去官网下载。当然这里也有破解版的,我从别的博主那里偷来的。
链接:https://pan.baidu.com/s/1SeCf0BCIO1LHB5-tjPD0OQ?pwd=8x2u
提取码:8x2u
--来自百度网盘超级会员V2的分享
然后新建连接:
输入连接名,主机名或者IP地址填写:localhost或者127.0.0.1,输入MYsql数据库的登陆密码,这里是root
下面使用Navicat创建一个Mrsoft的数据库,右键单击mr->选择新建数据库-> 输入数据库信息。3.5
3.5安装pymysql模块
在pycharm下面的控制台里面输入这一串命令
pip install PyMySQL
当然有可能下载失败,因为我当时就下载失败了,主要原因是这个服务器在国外,下载较慢,甚至下载失败的情况,所以我们可以用国内的一些镜像源。如果配置默认镜像源可以在csdn上找其他帖子,我是直接临时使用清华镜像源。使用的是这一串命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 模块名
3.使用PyMysql模块
对着第一步给的执行流程。
# time: 2024/7/27 下午11:25
# file: demo.py
# author: 狗岁
#导入pymysql模块
import pymysql
#创建连接对象
con = pymysql.connect(
host="localhost",
port=3306,
user="root",
password="123456",
database="pythontest"
)
#需要执行的sql语句 这里是一个建表语句
str = """
create table student(
`id` int(10) primary key,
`name` varchar(20)
)
"""
sql = """
CREATE TABLE if not exists books(
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
category varchar(50) NOT NULL,
price decimal(10,2) DEFAULT NULL,
publish_time date DEFAULT NULL,
PRIMARY KEY(id)
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
"""
#获取游标对象
cursor = con.cursor()
#执行sql语句,在这里会返回一个0/1,意思是数据库创建成功或者失败
cursor.execute(sql)
cursor.close()
con.close()
对于增删改只需要进行执行sql语句就行了,而对于查询操作,需要对查询出来的数据进行展示,
而cursor执行后返回的数据是查出来数据的数量,对于显示数据又三个函数:
1.fetchone() 显示第一个
2.fetchall() 显示所有的查询结果
3.fetchmany() 显示查询结果的前几个数据,可以写入参数
# time: 2024/7/28 上午12:02
# file: demo2.py
# author: 狗岁
import pymysql
con = pymysql.connect(host="localhost",port=3306,user="root",password="123456",database="pythontest")
a = con.cursor()
cursor = con.cursor()
data = [("零基础学习python",'python','1',"2018-09-10"),("零基础学习java",'java','11',"2018-09-11")]
# cursor.executemany("insert into books(name,category,price,publish_time) values (%s,%s,%s,%s)",data)
a = cursor.execute("select * from books")
print(a)
# s = cursor.fetchone()
# s = cursor.fetchmany(3)
# s = cursor.fetchall()
cursor.close()
con.close()
在学习java的时候,在dao层如果sql语句写错了,他不会返回没查到,而是报错,因此对于每个数据库操作还需要进行异常处理。
# time: 2024/7/28 下午10:56
# file: demo3.py
# author: 狗岁
import pymysql
con = pymysql.connect(host="localhost", port=3306, user="root", password="123456", database="pythontest")
sql = "update books set price = 41 where category = python"
cursor = con.cursor()
try:
cursor.execute(sql)
except Exception as e:
print("修改失败", e)
cursor.execute("select * from books where category = 'python'")
result = cursor.fetchone()
print(result)
cursor.close()
con.close()
当然还有一些关于事务的提交和回滚什么的,但是不是开发,对于python来说,学习这么多已经够用了
结语
现在是北京时间2024年7月31日,早上7点54分,我在写帖子的同时吃了一个面包,但是还是有点饿,再吃一个吧,9点上班,所以不是我不愿意写下去啊,其实还有一个多线程没有写,爬虫的也没有写,无伤大雅,夜晚回来看有没有时间,今天一个朋友过来,估计也没时间,不唠嗑了,上班!今天是python小白,梦想是月入过万,mai起!