学习笔记26数据库的连接与操作
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记26数据库的连接与操作相关的知识,希望对你有一定的参考价值。
数据库的连接与操作
一、连接数据库
用Python连接mysql数据库,使用的方法是Connect(),具体的参数同MySQL Workbench中的连接信息,具体如下图所示。
# 用Python 连接数据库
connect = pymysql.Connect(host="127.0.0.1",
port=3306,
user="mao",
password="123456",
database="pythontest",
charset="utf8")
二、建立游标执行SQL
操作SQL之前需要用到cursor()方法创建一个游标,然后通过该游标去处理SQL代码。
上面的例子是创建一个自定义表“userinfo”,包含id、name、age和gender四个字段,运行完毕后可以看到在数据库中已经创建成功了。
创建完table就可以执行插入数据的操作了。
这里需要注意的是:执行完插入代码之后,需要用到commit()方法提交之后才可以在数据库中被查询到。
日常处理中往往需要批量插入多条数据,这时候需要用到循环遍历去处理,每次循环运行一次insert语句,最后一次性提交。
tip:下例中的format(*)中的“*”意思是将元组中的元素解压出来。
要是觉得上面的循环遍历方法比较繁琐,这里其实也有更为简便的方法,就是executemany()方法,一次性插入多条数据。
三、执行事务
事务机制可以确保数据的一致性。
事务应该具有以下四个属性:原子性、一致性、隔离性和持久性,这四个属性通常称之为ACID特性。
- 原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的各个操作,要么都做,要么都不做;
- 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的;
- 隔离性(isolation):一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰;
- 持久性(durability):持久性也称之为永久性(permanence),指的是一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。
为此,引入了以下格式的代码。
try: # 尝试运行下面的代码,可能正常运行,也可能报错
except: # 如果上面的代码报错,则运行下面的代码
finally: # 不管代码是否报错,下面的代码均会运行
比如上例中的插入操作,严格来说不是很严谨,我们就可以这样做改善,使其保持数据的一致性。
四、查询数据
cursor.fetchone() # 逐条提取数据
cursor.fetchall() # 提取所有数据
cursor.fetchmany(3) # 提取查询到的前几条数据
这里面也是有指针的,提取完毕了就没有了。
【练习题】
读取文件“grade.txt“,将其数据存到MySQL数据库中,然后查询出数学成绩大于90分的学生清单。
以上是关于学习笔记26数据库的连接与操作的主要内容,如果未能解决你的问题,请参考以下文章
20179223《Linux内核原理与分析》第十一周学习笔记