Python筆記之SqlAlchemy使用

發表於2017-04-14

一、SQLAlchemy

SQLAlchemy是Python程式語言下的一款ORM框架,該框架建立在資料庫API之上,使用關係物件對映進行資料庫操作,簡言之便是:將物件轉換成SQL,然後使用資料API執行SQL並獲取執行結果。

Python筆記之SqlAlchemy使用

ORM方法論基於三個核心原則:

簡單:以最基本的形式建模資料。

傳達性:資料庫結構被任何人都能理解的語言文件化。

精確性:基於資料模型建立正確標準化了的結構。

Dialect用於和資料API進行交流,根據配置檔案的不同呼叫不同的資料庫API,從而實現對資料庫的操作,如:

‘資料庫型別+資料庫驅動名稱://使用者名稱:口令@機器地址:埠號/資料庫名’

MySQL-Python

pymysql

MySQL-Connector

cx_Oracle

更多詳見:http://docs.sqlalchemy.org/en/latest/dialects/index.html

注:

1.基本操作:

1)連結資料庫:create_engine()

2)欄位和資料型別及操作方法

在sqlalchemy.schema包裡有資料庫關係的描述,列舉幾個最常用的:

欄位:Column

索引:Index

表:Table

資料型別在sqlalchemy.types包,列舉幾個最常用的:

二進位制:BIGINT

布林:BOOLEAN

字元:CHAR

可變字元:VARCHAR

日期:DATETIME

其他方法 execute,update,insert,select,delete,join等 自行補腦

3)建立表結構

使用 Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 進行資料庫操作。Engine使用Schema Type建立一個特定的結構物件,之後通過SQL Expression Language將該物件轉換成SQL語句,然後通過 ConnectionPooling 連線資料庫,再然後通過 Dialect 執行SQL,並獲取結果。

3)插入一條資料

使用 Engine/ConnectionPooling/Dialect 進行資料庫操作,Engine使用ConnectionPooling連線資料庫,然後再通過Dialect執行SQL語句。

4) 增刪改查

先建立資料庫

增加

刪除

修改/更新

查詢

注:請匯入查詢模組

5)繼承SqlORM類來運算元據庫

注:SQLAlchemy無法修改表結構,如果需要可以使用SQLAlchemy開發者開源的另外一個軟體Alembic來完成。

6.繼承類式增刪改查:

使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有元件對資料進行操作。根據類建立物件,物件轉換成SQL,執行SQL。

Query物件可以返回可迭代的值(iterator value),然後我們可以通過for in來查詢。不過Query物件的all()、one()以及first()方法將返回非迭代值(non-iterator value),比如說all()返回的是一個列表first()方法限制並僅作為標量返回結果集的第一條記錄:

1)先建立相關資料庫

2.增加

3.刪除

4.修改

5.查詢

7.外來鍵關聯

由於關聯式資料庫的多個表還可以用外來鍵實現一對多、多對多等關聯,相應地,ORM框架也可以提供兩個物件之間的一對多、多對多等功能。

1)一對多(一個User可以有多個Address)
Python筆記之SqlAlchemy使用

結果:

2)多對多

建立一個雙向一對多關係,“反向”是一個許多人,指定一個額外的relationship()函式
並連線兩個使用relationship.back_populates引數
簡單來說, relationship函式是sqlalchemy對關係之間提供的一種便利的呼叫方式, backref引數則對關係提供反向引用的宣告。在最新版本的sqlalchemy中對relationship引進了back_populates引數。

Python筆記之SqlAlchemy使用

先建立資料庫:

3.)多對多之三表外來鍵關聯
Python筆記之SqlAlchemy使用

請使用手機”掃一掃”x

相關文章