SQLAlchemy ORM

SQLAlchemy簡(jiǎn)介

SQLAlchemy是Python SQL工具箱和對(duì)象關(guān)系映射器,它為應(yīng)用程序開(kāi)發(fā)人員提供了SQL的全部功能和靈活性刁赦。SQLAlchemy最著名的是對(duì)象關(guān)系映射器(ORM)廓译,它是提供數(shù)據(jù)映射器模式的可選組件眉枕,在該模式中忱嘹,可以以開(kāi)放式衣迷,多種方式將類映射到數(shù)據(jù)庫(kù)-允許對(duì)象模型和數(shù)據(jù)庫(kù)模式以從一開(kāi)始就完全脫鉤。

  • 安裝(SQLAlchemy1.4版本)

>>> import sqlalchemy
>>> sqlalchemy.__version__ 
1.4.0
  • 連接數(shù)據(jù)庫(kù)

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
  • 聲明映射(聲明性基類declarative_base)

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
  • 映射對(duì)應(yīng)表

class User(Base):
  # 對(duì)應(yīng)數(shù)據(jù)庫(kù)關(guān)聯(lián)表
   __tablename__ = 'users'
   # 字段, 數(shù)據(jù)類型邮破,[主鍵自增]
   id = Column(Integer, primary_key=True)
   name = Column(String(50))
   fullname = Column(String(50))
   nickname = Column(String(50))
    # 以便我們的示例顯示格式良好的 User 對(duì)象(可選擇性顯示)
   def __repr__(self):
       return "<User(name='%s', fullname='%s', nickname='%s')>" % (
                            self.name, self.fullname, self.nickname)
  • 通過(guò)映射聲明類的table屬性查看關(guān)于映射表的信息

>>> User.__table__ 
Table('users', MetaData(bind=None),
            Column('id', Integer(), table=<users>, primary_key=True, nullable=False),
            Column('name', String(50), table=<users>),
            Column('fullname', String(50), table=<users>),
            Column('nickname', String(50), table=<users>), schema=None)
# MetaData(bind=None)說(shuō)明我們這個(gè)users表在數(shù)據(jù)庫(kù)不存在诈豌,還沒(méi)有創(chuàng)建
  • 一句話創(chuàng)建表結(jié)構(gòu)

>>> Base.metadata.create_all(engine)
SELECT ...
PRAGMA table_info("users")
()
CREATE TABLE users (
    id INTEGER NOT NULL, name VARCHAR,
    fullname VARCHAR,
    nickname VARCHAR,
    PRIMARY KEY (id)
)
()
COMMIT
  • 檢查我們創(chuàng)建的映射是否正確

>>> ed_user = User(name='ed', fullname='Ed Jones', nickname='edsnickname')
>>> ed_user.name
'ed'
>>> ed_user.nickname
'edsnickname'
>>> str(ed_user.id)
'None'
  • 創(chuàng)建會(huì)話(session)

# 方法一
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)

# 方法二(如果您的應(yīng)用程序還沒(méi)有 Engine 定義模塊級(jí)對(duì)象時(shí))
from sqlalchemy.orm import sessionmaker
Session = sessionmaker()
Session.configure(bind=engine)

#當(dāng)使用時(shí)實(shí)例化對(duì)象調(diào)用
session = Session()
  • 后續(xù):

利用 SQLAlchemy-ORM 進(jìn)行數(shù)據(jù)的增刪改查
更多知識(shí)請(qǐng)參考SQLAlchemy 1.4文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仆救,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子矫渔,更是在濱河造成了極大的恐慌彤蔽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庙洼,死亡現(xiàn)場(chǎng)離奇詭異顿痪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)油够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)蚁袭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人石咬,你說(shuō)我怎么就攤上這事揩悄。” “怎么了碌补?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵虏束,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我厦章,道長(zhǎng)镇匀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任袜啃,我火速辦了婚禮汗侵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘群发。我一直安慰自己晰韵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布熟妓。 她就那樣靜靜地躺著雪猪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪起愈。 梳的紋絲不亂的頭發(fā)上只恨,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音抬虽,去河邊找鬼官觅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阐污,可吹牛的內(nèi)容都是我干的休涤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼笛辟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼功氨!你這毒婦竟也來(lái)了序苏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疑故,失蹤者是張志新(化名)和其女友劉穎杠览,沒(méi)想到半個(gè)月后弯菊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體纵势,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年管钳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钦铁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡才漆,死狀恐怖牛曹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情醇滥,我是刑警寧澤黎比,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布虎谢,位于F島的核電站校焦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏褒颈。R本人自食惡果不足惜不跟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一颓帝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窝革,春花似錦购城、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至漆诽,卻和暖如春侮攀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拴泌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工魏身, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚪腐。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓箭昵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親回季。 傳聞我的和親對(duì)象是個(gè)殘疾皇子家制,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345