必威电竞|足球世界杯竞猜平台

SQLAlchemy
來源:互聯(lián)網(wǎng)

SQLAlchemy是Python下的一款開源軟件。提供了SQL工具包及對(duì)象關(guān)系映射(NHibernate)工具,使用MIT許可證發(fā)行。SQLAlchemy“采用簡(jiǎn)單的Python語(yǔ)言,為高效和高性能的數(shù)據(jù)庫(kù)訪問設(shè)計(jì),實(shí)現(xiàn)了完整的企業(yè)級(jí)持久模型”。SQLAlchemy的理念是,SQL數(shù)據(jù)庫(kù)的量級(jí)和性能重要于對(duì)象集合;而對(duì)象集合的抽象又重要于表和行。因此,SQLAlchemy采用了類似于Java里Hibernate的數(shù)據(jù)映射模型,而不是其他ORM框架采用的Active Record模型。不過,Elixir和declarative等可選插件可以讓用戶使用聲明語(yǔ)法。SQLAlchemy首次發(fā)行于2006年2月,并迅速地在Python社區(qū)中最廣泛使用的NHibernate工具之一,不亞于Django的ORM框架。

模塊簡(jiǎn)介

對(duì)象關(guān)系映射器(Object Relational Mappers,ORM)在過去數(shù)年吸引了不少人的目光。主要原因是 ORM 經(jīng)常會(huì)在 Web 應(yīng)用程序框架中被提起,因?yàn)樗强焖匍_發(fā)(Rapid Development)棧中的關(guān)鍵組件。Django 和 Ruby on Rails 等 Web 框架采用了設(shè)計(jì)一個(gè)獨(dú)立棧的方法,將自主開發(fā)的 ORM 緊密集成到該框架中。而其他框架,如 Pylons、Turbogears 和 Grok,則采用更加基于組件的架構(gòu)結(jié)合可交換的第三方組件。兩種方法都有各自的優(yōu)勢(shì):緊密集成允許非常連貫的體驗(yàn)(如果問題映射到框架),而基于組件的架構(gòu)則允許最大的設(shè)計(jì)靈活性。但是,本文的主題并不是 Web 框架;而是 SQLAlchemy。

主要應(yīng)用

SQLAlchemy 在構(gòu)建在 WSGI 規(guī)范上的下一代 Python Web 框架中得到了廣泛應(yīng)用,它是由 Mike Bayer 和他的核心開發(fā)人員團(tuán)隊(duì)開發(fā)的一個(gè)單獨(dú)的項(xiàng)目。使用 SQLAlchemy等獨(dú)立 NHibernate 的一個(gè)優(yōu)勢(shì)就是它允許開發(fā)人員首先考慮數(shù)據(jù)模型,并能決定稍后可視化數(shù)據(jù)的方式(采用命令行工具、Web 框架還是 GUI 框架)。這與先決定使用 Web 框架或 GUI 框架,然后再?zèng)Q定如何在框架允許的范圍內(nèi)使用數(shù)據(jù)模型的開發(fā)方法極為不同。

SQLAlchemy 的一個(gè)目標(biāo)是提供能兼容眾多數(shù)據(jù)庫(kù)(如 SQLite、MySQL、Postgres、Oracle數(shù)據(jù)庫(kù)、MS-SQL、SQLServer 和 Firebird)的企業(yè)級(jí)持久性模型。SQLAlchemy 正處于積極開發(fā)階段,當(dāng)前最新的 API 將圍繞版本 0.5 設(shè)計(jì)。請(qǐng)參閱參考資料部分,獲取官方 API 文檔、教程和 SQLAlchemy 書籍的鏈接。

SQLAlchemy 取得成功的一個(gè)證明就是圍繞它已建立了豐富的社區(qū)。針對(duì) SQLAlchemy 的擴(kuò)展和插件包括:declarative、Migrate、Elixir、SQLSoup、django-sqlalchemy、DBSprockets、FormAlchemy 和 z3c.sqlalchemy。

示例

SQLAlchemy的靈活性也體現(xiàn)在其提供的編程示例中。例如,定義電影和導(dǎo)演之間的多對(duì)一關(guān)系時(shí),可以通過用戶定義的Python類來創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫(kù)表格,并通過簡(jiǎn)單的操作來插入和查詢數(shù)據(jù)。這些操作包括從關(guān)聯(lián)的任何一方創(chuàng)建實(shí)例,以及為延遲加載和預(yù)先加載自動(dòng)生成SQL查詢。這種靈活性允許開發(fā)者根據(jù)需要進(jìn)行延遲加載或預(yù)先加載,從而優(yōu)化性能和資源利用。

結(jié)構(gòu)和使用

在使用SQLAlchemy時(shí),首先需要定義數(shù)據(jù)模型。這通常涉及創(chuàng)建Python類并將其映射到數(shù)據(jù)庫(kù)表。SQLAlchemy使用聲明性基類來自動(dòng)定義表的元數(shù)據(jù)。然后,可以使用會(huì)話(session)來插入數(shù)據(jù),會(huì)話負(fù)責(zé)與數(shù)據(jù)庫(kù)的所有交互。數(shù)據(jù)插入后,可以執(zhí)行查詢來檢索數(shù)據(jù)。SQLAlchemy提供了豐富的查詢接口,允許開發(fā)者以幾乎與寫原生SQL一樣的方式來檢索數(shù)據(jù),同時(shí)還提供了對(duì)象化的接口來處理結(jié)果。

擴(kuò)展性和社區(qū)

SQLAlchemy的成功也得益于其強(qiáng)大的擴(kuò)展性和活躍的社區(qū)支持。社區(qū)貢獻(xiàn)的擴(kuò)展和插件豐富了SQLAlchemy的生態(tài)系統(tǒng),使其能夠更好地集成到各種應(yīng)用和框架中。這些擴(kuò)展和插件不僅增強(qiáng)了SQLAlchemy的功能,也提供了更多的選擇來滿足不同項(xiàng)目的需求。

參考資料 >

生活家百科家居網(wǎng)