Mysql入門筆記(0):python操作mysql數據庫(增,刪,改,查)

[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()方法回滾當前遊標的所有操作。每一個方法都開始了一個新的事務。

發佈了106 篇原創文章 · 獲贊 488 · 訪問量 140萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章