數據庫表是一個二維表,包含多行多列。把一個表的內容用Python的數據結構表示出來的話,能夠用一個list表示多行,list的每個元素是tuple,表示一行記錄,好比,包含id和name的user表。[('1','A'),('2','B'),('3','C')] Python的DB-API返回的數據結構就是像上面這樣表示的。 可是用tuple表示一行很難看出表的結構。若是把一個tuple用class實例來表示,就能夠更容易地看出表的結構來: class User(object): def init(self,id,name): self.id=id self.name=name [ User('1','A'), User('2','B'), User('3','C') ] 這就是傳說中的ORM技術:Object-Relational Mapping,把關係數據庫的表結構映射到對象上。是否是很簡單? 可是由誰來作這個轉換呢?因此ORM框架應運而生。 在Python中,最有名的ORM框架是SQLAlchemy。咱們來看看SQLAlchemy的用法。 第一步,導入SQLAlchemy,並初始化DBSession。 create_engine()用來初始化數據庫鏈接。SQLAlchemy用一個字符串表示鏈接信息: '數據庫類型+數據庫驅動名稱://用戶名:口令@機器地址:端口號/數據庫名' 你只須要根據須要替換掉用戶名、口令等信息便可。 下面,咱們看看如何向數據庫表中添加一行記錄。 因爲有了ORM,咱們向數據庫表中添加一行記錄,能夠視爲添加一個User對象。 可見,關鍵是獲取session,而後把對象添加到session,最後提交併關閉。Session對象可視爲當前數據庫鏈接。 如何從數據庫表中查詢數據呢?有了ORM,查詢出來的能夠再也不是tuple,而是User對象。SQLAlchemy提供的查詢接口。 可見,ORM就是把數據庫表的行與相應的對象創建關聯,互相轉換。 因爲關係數據庫的多個表還能夠用外鍵實現一對多、多對多等關聯,相應地,ORM框架也能夠提供兩個對象之間的一對多、多對多等功能。 當咱們查詢一個User對象時,該對象的books屬性將返回一個包含若干個Book對象的list。 小結 ORM框架的做用就是把數據庫表的一行記錄與一個對象互相作自動轉換。 正確使用ORM的前提是瞭解關係數據庫的原理。數據庫