环境
1.python2.7
2.安装MySQLdb软件,windows下之间安装二进制编译版本即可
3.PythonWin或者其他python IDE。
解决的问题
每一种数据库都有其自己的官方API,而这些API是不同的,这也就意味着如果我们开发了一个基于postgresql的程序,想要换成MySQL便需要重新开发。因此,我们想要定义一个通用的数据库调用API,以减少我们在更换数据库时的工作量。在通用的API和数据库之间通过相应的中间模块来实现,比如在操作MySQL的时候,我导入MySQLdb这个中间模块,在使用postgresql的时候我们导入postgresqldb模块,这样我们的代码就不用修改而只需要导入不同的模块即可。
操作流程
1.导入MySQLdb模块
2.通过MySQLdb模块中的Connect()函数,并在函数中填入相应的参数来生成一个connection对象,这样便建立了和数据库之间的连接。
3.通过connection对象中的cursor()函数,生成一个cursor对象,我们通过这个对象中的函数对数据库进行相应的操作。
4.以查询为例,执行cursor对象的execute()函数,函数以字符串形式的SQL语句作为参数。
5.通过cursor对象的fetchone、fetchmany、fetchall函数获取查询结果。
6.关闭cursor
7.关闭connection
代码示例
import MySQLdb connection = MySQLdb.Connect( host = 'ip或者localhost', port = 3306, user = 'root', passwd = '密码', db = 'mydb', charset = 'utf8' ) cursor = connection.cursor() sql = 'select * from user' cursor.execute(sql) rs = cursor.fetchall() for item in rs: print item cursor.close() connection.close()
事务
事务是一个程序一次访问和更新数据库时执行的所有操作的集合。
事务的性质
- 原子性:所以操作要么都做要么都不做
- 一致性:事务必须使数据库从一个一致性状态转换到另一个一致性状态,比如:一次银行转账,A转给B100元,转账前两者存款之和与转账后两个存款之和相等,是一致性状态
- 隔离性:多个事务同时执行时,一个事务的执行不能被其它事务所干扰
- 持久性:事务一旦提交,它对数据库的改变将是永久的
MySQL中事务的操作
1.关闭事务自动提交:connection.autocommit(False)
2.正常结束事务:connection.commit()
3.事务回滚:connection.rollback()
4.事务只影响增删查改中增删改,也即是说如果关闭了自动提交,那么我们在进行增删改后如果没有手动进行事务提交,那么数据库便不会进行更改。而查询因为对数据库的数据没有影响,因而不受此影响。