1. 程式人生 > >python連線資料庫(3)插入更新和刪除

python連線資料庫(3)插入更新和刪除

首先說一下事務與回滾:

事務就是執行單元的集合

回滾就是回到執行之前的狀態

事務應該具有4個屬性:原子性、一致性、隔離性、永續性。這四個屬性通常稱為ACID特性。
① 原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。
② 一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
③ 隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
④ 永續性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。


#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()
程式碼一和程式碼二的區別就是加入了檢測機制,是否出現異常。如果正常用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(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()