sqlalchemy是python中非常流行的持久化框架惠啄,提供了非常方便的鏈接數(shù)據(jù)庫(kù)的接口;
- 開(kāi)始
sqlalchemy可以分成兩部分:sqlalchemy ORM(對(duì)象關(guān)系映射器),sqlalchemy Core(sql表達(dá)式語(yǔ)言)
sqlalchemy組件圖
sqlalchemy Core:核心是sql表達(dá)式語(yǔ)言落塑,sql表達(dá)式語(yǔ)言是一個(gè)完全獨(dú)立于ORM包的工具箱,可以用來(lái)構(gòu)造可操作的sql表達(dá)式。
sqlalchemy ORM: 是一個(gè)對(duì)象關(guān)系映射器厌衙,提供了一種將python類與數(shù)據(jù)庫(kù)表以及這些類的實(shí)例與相應(yīng)表中的行關(guān)聯(lián)起來(lái)的方法。
在使用過(guò)程中绞绒,這兩種方式可以根據(jù)使用場(chǎng)景的不同單獨(dú)使用婶希,也可以結(jié)合起來(lái)使用。 -
sqlalchemy Core 使用方法
導(dǎo)入sqlalchemy模塊蓬衡,以及使用一種數(shù)據(jù)庫(kù)喻杈,驗(yàn)證可以使用python內(nèi)置的數(shù)據(jù)庫(kù)sqlite
# 導(dǎo)入包
from sqlalchemy import create_engine
# 使用一種數(shù)據(jù)庫(kù),這里使用python自帶的sqlite數(shù)據(jù)庫(kù)
import sqlite3
創(chuàng)建一個(gè)鏈接數(shù)據(jù)庫(kù)的實(shí)例狰晚,使用create_engine()接口來(lái)完成所支持?jǐn)?shù)據(jù)庫(kù)的實(shí)例的創(chuàng)建筒饰。
create_engine()有兩個(gè)參數(shù):
第一個(gè)是數(shù)據(jù)庫(kù)的連接信息,寫(xiě)法如下:
‘?dāng)?shù)據(jù)庫(kù)類型+數(shù)據(jù)庫(kù)驅(qū)動(dòng)://數(shù)據(jù)庫(kù)賬號(hào):密碼@主機(jī)名:端口號(hào)/數(shù)據(jù)庫(kù)名稱’
- 數(shù)據(jù)庫(kù)驅(qū)動(dòng)可以省略壁晒,這樣就會(huì)使用sqlalchemy提供的數(shù)據(jù)庫(kù)默認(rèn)驅(qū)動(dòng)瓷们;
- 后就接著就是數(shù)據(jù)庫(kù)的連接信息,如果使用本地測(cè)試數(shù)據(jù)庫(kù)秒咐,比如sqlite换棚,那么這里的連接信息可以省略;
- 最后一個(gè)是數(shù)據(jù)庫(kù)名稱反镇,sqlite可以存儲(chǔ)到內(nèi)存或者本地文件中固蚤,memory指的是存儲(chǔ)到內(nèi)存中;
第二個(gè)參數(shù)echo=True 表示打印執(zhí)行的sql語(yǔ)句等詳細(xì)的執(zhí)行信息歹茶;
如果使用了日志模塊夕玩,那么輸出的執(zhí)行信息將會(huì)按照定義的日志格式顯示出來(lái)你弦;
# 有兩個(gè)參數(shù),第一個(gè)是
engin=create_engine('sqlite:///:memory:',echo=True)
定義和創(chuàng)建表