探索SQLAlchemy文檔

一、SQLAlchemy簡介

1、SQLAlchemy是什麼

SQLAlchemy是一個Python SQL工具包,它包括ORM(對象關係映射)和Core兩部分,可以與多種關係資料庫進行交互。ORM是將關係資料庫中的數據轉換為Python對象,使得Python開發人員可以使用對象來代替SQL語句來操縱資料庫,它通過映射(mapping)類(class)到資料庫中的表格(table),從而實現了對資料庫中數據的操作。

Core則是更加低階的SQL編程工具,主要負責處理表、欄位、資料庫會話等基本的SQL構建功能,對於熟練掌握SQL的開發人員來說更加友好。

2、SQLAlchemy的優勢

相比於其他的Python SQL工具包,SQLAlchemy的優勢主要體現在以下幾個方面:

1) 易於學習:SQLAlchemy採用面向對象設計,使用Python的類和對象來進行資料庫操作,這種方式與Python程序員的編程習慣非常接近,因此SQLAlchemy的學習曲線非常平緩。

2) 良好的ORM支持:SQLAlchemy的ORM實現非常靈活和強大,可以支持複雜的數據關係映射,它不僅僅是數據的映射關係,還可以提供事務管理、連接池管理、緩存管理等一系列高級功能,大大簡化了數據操作的開發難度。

3) 支持多種資料庫: SQLAlchemy 不僅可以支持使用 Python 對資料庫進行操作,更為重要的是它支持了多個資料庫的操作,包括了 MySQL、PostgreSQL、SQLite 等主流的資料庫。

二、SQLAlchemy的ORM映射機制

1、映射類(mapping class)的定義


from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base): 
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

以上代碼定義了一個名為User的映射類,把這個類和資料庫中的表users進行了映射。在User類中,id、name和age都是該表中的列,它們被定義為Column對象。其中,id作為唯一的主鍵,被定義為primary_key=True。

2、資料庫操作基本步驟

在使用SQLAlchemy實現ORM映射時,通過Session進行與資料庫的交互,其基本使用步驟如下:

1)創建engine:engine是最基本的SQLAlchemy對象,它負責實際的資料庫交互,也是Session的工廠,每個engine通常與一個特定的資料庫進行交互。

2)定義映射類:定義映射類並與engine進行綁定,engine可以了解到資料庫的相關信息。

3)創建Session:使用sessionmaker類創建session,session負責處理與資料庫的所有交互。使用session進行CRUD操作時,ORM會自動將用戶操作轉化為SQL語句,然後執行這些SQL語句。

4)使用session進行CRUD操作。


from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 連接資料庫
engine = create_engine('mysql+pymysql://username:password@host:port/dbname')

# 創建session
Session = sessionmaker(bind=engine)
session = Session()

# CRUD操作
user = User(name='小明', age=20)
session.add(user)   # 添加記錄
session.commit()

result = session.query(User).filter_by(name='小明').first()  # 查詢記錄
result.age = 21    # 更新記錄
session.delete(result)  # 刪除記錄
session.commit()

session.close()  # 關閉session

三、SQLAlchemy的Core使用

1、基本操作

SQLAlchemy的core是一個輕量級的SQL封裝庫,它可以讓我們使用SQL語句來操作資料庫。下面是一個簡單的例子,使用SELECT語句從資料庫中查詢一條記錄:


from sqlalchemy import create_engine, text

engine = create_engine('mysql+pymysql://username:password@host:port/dbname')

with engine.connect() as conn:  # 獲取連接
    result = conn.execute(text("SELECT * FROM users WHERE name=:name"), name='小明')   # 執行SQL
    print(result.fetchone())

2、事務控制

在SQLAlchemy的Core中,事務管理需要手動控制。如果需要進行事務管理,可以使用connection對象上的begin、commit、rollback 方法。


from sqlalchemy import create_engine, text

engine = create_engine('mysql+pymysql://username:password@host:port/dbname')

with engine.connect() as conn:
    trans = conn.begin()  # 開始事務

    try:
        conn.execute(text("UPDATE users SET age=:age WHERE name=:name"), name='小明', age=21)
        conn.execute(text("UPDATE users SET age=:age WHERE name=:name"), name='小紅', age=22)
        trans.commit()  # 提交事務
    except:
        trans.rollback()  # 回滾事務
        raise

四、SQLAlchemy的高級特性

1、連接池管理

在並發訪問時,頻繁地建立和斷開資料庫連接是一項非常耗費資源的操作,會嚴重影響應用程序性能。SQLAlchemy提供了連接池技術,可以有效地減輕打開和關閉資料庫連接的負擔,從而提高應用的並發訪問能力。

2、緩存管理

在讀-heavy的應用中,使用緩存可以很好的提高性能。SQLAlchemy也支持緩存,可以將執行過的SQL語句的查詢結果緩存起來,以便後續的查詢能夠快速地返回結果。

3、表單映射

SQLAlchemy支持生成Web表單,可以將SQLAlchemy映射的對象快速轉換為HTML表單。這樣,可以在不編寫任何HTML代碼的情況下,快速地生成表單頁面。

五、總結

本文簡要介紹了SQLAlchemy的基本功能和高級特性,包括ORM和Core的使用、事務控制、連接池管理、緩存管理以及表單映射等方面。SQLAlchemy是一個功能強大的Python SQL工具包,提供了靈活的ORM實現和強大的Core功能,符合Python編程的習慣,易於學習和使用。

在實際開發中,開發人員可以結合實際業務需求選擇相應的SQLAlchemy功能,從而實現快速、高效、可靠的資料庫操作。

原創文章,作者:AMTDG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325250.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AMTDG的頭像AMTDG
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • 使用Spire.PDF進行PDF文檔處理

    Spire.PDF是一款C#的PDF庫,它可以幫助開發者快速、簡便地處理PDF文檔。本篇文章將會介紹Spire.PDF庫的一些基本用法和常見功能。 一、PDF文檔創建 創建PDF文…

    編程 2025-04-29
  • Python爬蟲文檔報告

    本文將從多個方面介紹Python爬蟲文檔的相關內容,包括:爬蟲基礎知識、爬蟲框架及常用庫、爬蟲實戰等。 一、爬蟲基礎知識 1、爬蟲的定義: 爬蟲是一種自動化程序,通過模擬人的行為在…

    編程 2025-04-28
  • Python生成PDF文檔

    Python是一門廣泛使用的高級編程語言,它可以應用於各種領域,包括Web開發、數據分析、人工智慧等。在這些領域的應用中,有很多需要生成PDF文檔的需求。Python有很多第三方庫…

    編程 2025-04-28
  • layuiadmin開發者文檔全面解讀

    layui是一款基於jQuery和CSS的模塊化前端UI框架。其中,layuiadmin是layui官方開源後台管理系統模板,提供了大量的模塊和插件,以便開發者快速構建後台管理系統…

    編程 2025-04-25
  • Python3.8中文文檔解讀

    Python 是一種解釋型語言、面向對象、動態數據類型的高級語言。 本篇文章旨在詳細闡述 Python3.8 中文文檔,從各個方面深入剖析 Python 的優勢,包括基礎語法、文件…

    編程 2025-04-25
  • jstree中文api文檔詳解

    一、jstree概述 jstree是一款跨瀏覽器的jQuery樹形菜單插件,提供了使用JSON數據源創建互動式樹形結構的功能。它是面向開發者的開源軟體,已經被廣泛使用在許多網站和應…

    編程 2025-04-25
  • 探究matplotlib中文文檔

    一、介紹 Matplotlib是一個Python的可視化庫,它提供了豐富的繪圖工具和良好的交互性,可用於生成高質量的二維圖形、三維圖形和動畫等。它的中文文檔是對於使用者非常友好的參…

    編程 2025-04-24
  • Vue-Treeselect 中文文檔深入解析

    一、 介紹 Vue treeselect 是一個易於使用,高效,具有可定製和實用功能的多選下拉菜單組件。它使用Vue.js組件系統,支持按需渲染選項和動態搜索,並能夠呈現任意類型的…

    編程 2025-04-24
  • 使用PoiWord將Word文檔轉換為PDF格式,提高文檔可讀性和分享效果

    Microsoft Word是一款功能強大的文字處理軟體,在日常工作和學習中被廣泛使用。然而,Word文檔需要安裝Microsoft Office軟體才能打開,而且在不同的操作系統…

    編程 2025-04-24
  • Node.js文檔全面解析

    一、安裝Node.js Node.js是基於V8引擎的,它支持許多操作系統,如Windows、Mac和Linux。安裝Node.js之前,需要先選擇相應的操作系統版本。可以在官方網…

    編程 2025-04-23

發表回復

登錄後才能評論