python連線資料庫(3)插入更新和刪除
阿新 • • 發佈:2019-01-22
首先說一下事務與回滾:
事務就是執行單元的集合
回滾就是回到執行之前的狀態
事務應該具有4個屬性:原子性、一致性、隔離性、永續性。這四個屬性通常稱為ACID特性。
① 原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。
② 一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
③ 隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
④ 永續性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
程式碼一和程式碼二的區別就是加入了檢測機制,是否出現異常。如果正常用conn.commit()提交到資料庫,重新整理即可。否者用到回滾事務,見程式碼#coding:utf-8 import MySQLdb conn=MySQLdb.connect(host = '127.0.0.1', port = 3306, charset ='utf8', passwd = '123456', user = 'root', db = 'immo' ) cursor = conn.cursor() sql_insert="insert into user(userid,username) values(13,'name110')" sql_update="update user set username='name911' where userid=9" sql_delete="delete from user where userid<4" cursor.execute(sql_insert) print cursor.rowcount#execute執行之後生成效果有幾行 cursor.execute(sql_delete) print cursor.rowcount cursor.execute(sql_update) print cursor.rowcount conn.commit() cursor.close() conn.close()
#coding:utf-8 import MySQLdb conn=MySQLdb.connect(host = '127.0.0.1', port = 3306, charset ='utf8', passwd = '123456', user = 'root', db = 'immo' ) cursor = conn.cursor() sql_insert="insert into user(userid,username) values(16,'name19')" sql_update="update user set username='name7' where userid=7" sql_delete="delete from user where usrid<5" try: cursor.execute(sql_insert) print cursor.rowcount#執行過inset改變了幾行 cursor.execute(sql_delete) print cursor.rowcount#同上 cursor.execute(sql_update) print cursor.rowcount conn.commit() except Exception as e: print e conn.rollback()#回滾事務 cursor.close() conn.close()