- 在开始本文内容前,先来谈谈数据库。各位小伙在学习数据类型的时候,都曾使用过容器类型来存储多条数据,像列表、元组、集合、字典等。在程序运行结束后,数据也会随着计算机的内存回收机制而消失。因此,为了永久地保存数据,我们采用文件来进行存储。那么,假设有这么一个场景,某个业务需要你存储上万条的个人信息,再采用以上方式存储会非常地费时废力,同时读取也相对麻烦。
- 这就有了数据库的概念,简而言之就是数据存储的仓库,而仓库最大的优点包括空间大、分类有序、查找方便等。我们口中常说的数据库往往指的是数据库管理系统,英文名缩写DBMS(Database Manage System),按照存储方式分为关系型数据库和非关系型数据库。
- 关系型数据库,以二维表及其联系来存储数据,代表的有Mysql、Oracle等
- 非关系型数据库,以键值对的形式来存储数据,代表的有Redis、HBase等
- 在python中,存在可以与mysql数据库进行交互的包,pymysql。小伙要是想尝试,需要先看看自己的python环境里有没有这个包,没有的话需要安装。见下图
- 那么开始今天的这个正题,如何使用pymysql这个包?具体要按照以下这个步骤:
- ①导包(PS:导包是一切的基础,要是敲完发现没导包,也太尴尬了~~)
- ②创建连接的对象---类似于去酒店吃饭,先联系前台
- ③创建游标----类似于前台帮你安排一位侍者小姐姐,它负责此次招待
- ④执行SQL语句并获取结果集----类似于你报菜名,小姐姐给你上菜
- ⑤操作结果集-----类似于酒足饭饱,到前台结账
- ⑥释放资源-----这就很简单了,跟小姐姐和前台说再见
以查找为例,具体过程如下:
# 1.导包
import pymysql
# 2.创建连接对象
conn = pymysql.connect(
host = 'xx.xx.xx.xx', # 连接对象的ip地址,也可以通过域名映射
port = 3306, # mysql数据库的常用端口号,牢记!!!
user = 'xxxx', # 数据库用户名
password = 'xxxxxx', # 数据库密码
database = 'xxx', # 要连接的数据库
charset = 'utf8' # 编码格式
)
# 3.创建游标
cur = conn.cursor()
# 4.执行sql语句并获取结果集
sql = 'select * from xxx;' # 单引号内为sql语句,注意要区分单双引号,分号结尾
row_count = cur.execute(sql)
print('您点了几道菜:{row_count}')
# 5.操作结果集
data = cur.fetchone() # 获取单条数据
data = cur.fetchmany(n) # 获取n条数据
for i in cur.fetchall(): # 遍历获取所有数据
print(i)
# 6.释放资源
cur.close()
conn.close()
- 讲完查找,就到增删改了。这得先切个内容,事务。有部分小伙可能学习mysql的时候,听说这个概念。这里我们在做一次简单回顾。
- 事务,指的是逻辑上的一组操作,组成事务的各个逻辑单元要么全部执行成功,要么全部执行失败。
- 事务的四大特性(ACID):
- ①原子性:组成事务的逻辑单元是最小单位,不可分割
- ②一致性:事务执行后,数据结果应保持一致
- ③隔离性:一个事务执行期间,不受其它事务的干扰
- ④永久性:无论事务执行成功与否,其结果都要永久写入数据中
- pymysql有关事务的相关语句:
- 开启事务 begin
- 提交事务 commit
- 事务回滚 rollback
- 回到正题,实现增删改大致于查的步骤类似,只不过需要在操作结果集的过程中进行事务的提交,这样结果才会永久保存。具体代码如下:
# 导包
import pymysql
# 函数:增
def add_data():
# 1.获取连接对象
conn = pymysql.connect(
host = 'xxx.xxx.xxx.xxx',
port = 3306,
user = 'xxxx',
password='xxxxxx',
database='xxx',
charset='utf8'
)
# 2.获取游标对象
cur = conn.cursor()
# 3.执行SQL语句,获取结果集
sql = "insert into xxx values ();"
row_count = cur.execute(sql)
print(f'操作的行数:{row_count}')
# 4.操作结果集
conn.commit()
# 5 释放资源
cur.close()
conn.close()
# 函数:改
def update_data():
# 1.获取连接对象
conn = pymysql.connect(
host = 'xxx.xxx.xxx.xxx',
port = 3306,
user = 'xxxx',
password='xxxxxx',
database='xxx',
charset='utf8'
)
# 2.获取游标对象
cur = conn.cursor()
# 3.执行SQL语句,获取结果集
sql = "update xxx set 列=值 where 具体条件;"
row_count = cur.execute(sql)
print(f'操作的行数:{row_count}')
# 4.操作结果集
conn.commit()
# 5 释放资源
cursor.close()
conn.close()
# 函数:删
def delete_data():
# 1.获取连接对象
conn = pymysql.connect(
host = 'xxx.xxx.xxx.xxx',
port = 3306,
user = 'xxxx',
password='xxxxxx',
database='xxx',
charset='utf8'
)
# 2.获取游标对象
cur = conn.cursor()
# 3.执行SQL语句,获取结果集
sql = "delete from xxx where 具体条件;"
row_count = cur.execute(sql)
print(f'操作的行数:{row_count}')
# 4.操作结果集
conn.commit()
# 5 释放资源
cur.close()
conn.close()
- 今天内容到此结束,祝大家元旦快乐,龙年行大运!!