Mysql入门笔记(0):python操作mysql数据库(增,删,改,查)

时间:2022-12-11 20:51:02
[python] view plain copy
  1. #!/usr/bin/env python  
  2. #coding:utf-8  
  3. import MySQLdb  
  4. db=MySQLdb.connect(host='localhost',user='root',passwd='123',db='08day5')  
  5. cur=db.cursor(cursorclass=MySQLdb.cursors.DictCursor)#以字典的形式展示  
  6. #cur=db.cursor()  
  7. #如果数据表已经存在,则使用execute()方法删除  
  8. cur.execute('DROP TABLE IF EXISTS EMPLOYEE')  
  9. #创建数据表  
  10. sql='''''CREATE TABLE EMPLOYEE( 
  11.        id INT PRIMARY KEY AUTO_INCREMENT, 
  12.        first_name VARCHAR(20) NOT NULL, 
  13.        last_name VARCHAR(20), 
  14.        age INT, 
  15.        sex CHAR(1), 
  16.        income FLOAT 
  17.        )'''  
  18. cur.execute(sql)  
  19. #插入操作(写法1)  
  20. sql='''''INSERT INTO EMPLOYEE(first_name,last_name,age,sex,income)  
  21.        values('xiaoqing','zhang',20,'W',2400)'''  
  22. try:  
  23.     cur.execute(sql)#执行sql语句  
  24.     db.commit()#提交到数据库执行  
  25. except:  
  26.     db.rollback()#Rollback in case there is any error!  
  27. #插入操作(写法2:注意引号的结束位置 以及 续行符的使用)  
  28. sql="INSERT INTO EMPLOYEE(first_name,last_name,\  
  29.      age,sex,income) \  
  30.      VALUES('%s','%s','%d','%c','%f')" % \  
  31.      ('wuji','zhang',34,'M',3400.8)  
  32. try:  
  33.     cur.execute(sql)#执行sql语句  
  34.     db.commit()#提交到数据库执行  
  35. except:  
  36.     print 'there is some error!'  
  37.     db.rollback()#发生错误时,回滚!  
  38. #查询操作  
  39. sql="SELECT * FROM EMPLOYEE WHERE income > '%d'" % (1000)  
  40. try:  
  41.     cur.execute(sql)  
  42.     results=cur.fetchall()  
  43.     print results  
  44. except:  
  45.     print 'there is some error!'  
  46. #更新操作  
  47. sql="UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX='%c'" % ('M')  
  48. try:  
  49.     cur.execute(sql)#执行sql语句  
  50.     db.commit()#提交到数据库执行  
  51. except:  
  52.     db.rollback()#发生错误时回滚!  
  53. #删除记录  
  54. sql="DELETE FROM EMPLOYEE WHERE age>'%d'" % (20)  
  55. try:  
  56.     cur.execute(sql)  
  57.     db.commit()  
  58. except:  
  59.     db.rollback()  
  60. cur.close()  
  61. db.close()  


执行事务
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
commit()方法提交游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。