如何使用Python连接数据库?如何在Python中使用MySQL?(っ•̀ω•́)っ✎⁾⁾ 数据库

引入pymysql库

以下都为Python3的通用操作流程,我编写此博客的时候Python2已被全面淘汰。
第一步,下载pymysql库
方法一:添加到全局(如果使用的pycharm请使用方法二)
pip install pymysql
在这里插入图片描述
方法二:在pycharm中添加(pycharm会创建一个局部环境,在全局中添加的库在pycharm中是使用不了的)
在这里插入图片描述
添加好后使用import pymysql来引入库

连接数据库

连接数据库我们要用的pymysql中的connect类

常用connect传入参数 作用
host 传入指定服务器ip(本地ip为127.0.0.1)
port 服务器的MySQL端口号(一般都是3306)
db database的简写,可以写成database,选择使用的数据库
user MySQL数据库的用户名
passwd password的简写,可以写成password,MySQL数据库密码
charset 选择字符集(常用uft8)

connect的传入参数远不止这些,不过其中大多数我们都不需要使用,如果需要,可自行查看源码。

mysql = pymysql.connect(host='127.0.0.1', port=3306, db='demo', user='root', passwd='root', charset='utf8')

制作游标

我们之前使用mysql将数据库实例化,我们现在调用myql中的cursor方法来获取游标。

cur = mysql.cursor()

增删改查

拿到游标后,我们就可以在此游标中使用增删改查等数据库常用操作,这里可以改查可以看我的另一篇博客数据库的增删改查(surd)有哪些操作?

游标中的方法

我们获取到游标cur后,需要用到其中几个方法才能真正的操作数据库

execute方法(执行语句)

执行语句我们需要用到游标.execute()
例如我们想要查看所有行数

all_mysql = cur.execute('select * from 寻觅的测试表;')

在这里插入图片描述
我们发现这里输出的数据并不是我们想要的数据,这是输出的是数据行数,我们有两行数据所以输出2.因为execute是用来执行SQL语句的,并不负责输出数据

获取游标中的数据

当我们的SQL语句有返回值时候(比如说读取数据库),我们就需要用到如下几个方法去获取SQL的返回值。
输出数据我们使用

  1. 游标.fetchone()
    获取一条数据
  2. 游标.fetchmany()
    获取多条数据
  3. 游标.fetchall()
    获取全部数据

如果需要获取数据,必须要先执行游标.execute()指定一个具体的表,否则会报错。

# 执行MySQL语句
all_mysql = cur.execute('select * from 寻觅的测试表;')
print(all_mysql)

# 获取数据库中的内容
data = cur.fetchone()
print(data)
data = cur.fetchone()
print(data)
data = cur.fetchone()
print(data)
data = cur.fetchmany(2)
print(data)
data = cur.fetchall()
print(data)

在这里插入图片描述

提交事务与回滚

如果你经常使用Innodb这类支持事务的存储引擎,应该对提交事务和回滚有一些影响。在pymysql中事务是默认开启的,在执行修改数据库的命令后如果不进行提交,哪数据库是无法正常修改的。
提交事务语法:mysql.commit()
回滚语法:mysql.rollback()
注意:提交事务和回滚不是游标的方法,而是连接的方法(pymysql.connect()的方法)

all_mysql = cur.execute('select * from 寻觅的年龄连接表;')
print(cur.fetchall())
cur.execute("insert into 寻觅的年龄连接表 values(10, '我最大');")
mysql.commit()
all_mysql = cur.execute('select * from 寻觅的年龄连接表;')
print(cur.fetchall())
cur.execute("insert into 寻觅的年龄连接表 values(9, '最大是我');")
mysql.rollback()
all_mysql = cur.execute('select * from 寻觅的年龄连接表;')
print(cur.fetchall())

在这里插入图片描述

清除游标与关闭连接

必须先清除游标,在关闭数据库,否则会出现不可预知的错误。

  1. 清除游标 游标.close
  2. 关闭连接 数据库.close
# 清除游标
cur.close()
# 关闭连接
mysql.close()

关闭连接和游标后,还是能通过fetchall方法读取到游标中的缓存,这个可以在结束后给游标赋个空值cur = None或者del游标del cur即可。
在这里插入图片描述

总结

方法 作用
pymysql.connect() 连接数据库
mysql.cursor() 获取游标
cur.execute() 执行SQL语句
cur.fetchone 输出单行
cur.fetchmany() 输出多行
cur.fetchall() 输出全部
mysql.commit() 提交事务
mysql.rollback() 回滚
cur.close() \ mysql.close() 清除关闭(先游标后连接)
发布了47 篇原创文章 · 获赞 23 · 访问量 3411

猜你喜欢

转载自blog.csdn.net/qq_39611230/article/details/103417957