1、通過create_engine()方法進行數據庫連接,返回一個db對象后,可以直接使用engine的execute執行sql的方式,這叫connectionless執行;也可以借助engine.connect()獲取conn,然后通過conn執行sql,叫做connection執行;主要差別在於是否使用transaction模式,如果不涉及transaction模式,兩種方法效果是一樣的,網網推薦使用后者;如果需要使用transaction,則使用ORM。
2 mysql的事務支持不是綁定在mysql服務器本身,而是與存儲引擎相關。1 MyISAM:不支持事務,用於只讀程序提高性能。2 InnoDB:支持ACID事務,行級鎖,並發。3 Berkeley DB:支持事務
3 事務的概念:一個事務就是一連續的一組數據庫操作,如果其中有一個操作失敗,則整個操作都會失敗。
4 事務必須滿足的4個條件(ACID):原子性(A)、一致性(C)、隔離性(I)、持久性(D)
原子性:一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(rollback)到事務開始前的狀態。
一致性:在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及后續數據庫的可自發性地完成預定的工作。
隔離性:數據庫一下多個並發事務同時多其數據進行讀寫和修改的能力、隔離性可以防止多個事務並發執行時,由於交叉執行而導致數據的不一致。事務隔離分為不同的級別、包括讀未提交、讀提交、可重復讀、串行化。
持久化:事務處理結束后,對數據的修改就是永久的,即便系統故障也不會丟失。