要學哪種資料庫語法?
常常聽到各種資料庫的名稱 SQLite
、PostgreSQL
、MySQL
… 阿到底要學哪一種?語法都有一些些不同,真的是搞死人。
我們看一下最基本的功能 - 創建表 在不同的資料庫下有不同的語法
SQLite
1
2
3
4
5
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
);
PostgreSQL
1
2
3
4
5
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
age INTEGER
);
MySQL
1
2
3
4
5
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
) ENGINE=InnoDB;
或許有人說都學就好!個人覺得除非你時間超多,不然不太可行, 就算都學會了,寫 code 的時候不會錯亂嗎?好拉,反正你行。 但我是不行拉。
這時候在軟體工程上的銀子彈
出現了,就是中間層
,可以解決這惱人的問題。
SQLAlchemy 就是個中間層。
SQLAlchemy
SQLAlchemy 是一個功能強大且靈活的 Python SQL 工具包和對象關係映射器(ORM
),它使開發者能夠更方便地與各種資料庫交互。
使用 SQLAlchemy 確實可以大大減少你需要處理不同資料庫系統之間差異的次數。 SQLAlchemy 提供了統一的接口來處理各種資料庫操作,讓你能夠專注於應用邏輯,而不必關心底層資料庫的細節差異。好用的工具不用可惜啊!
優點
它的核心功能如下
對象關係映射(ORM):
ORM
允許開發者使用 Python 類和對象來表示和操作資料庫中的表和記錄。這樣可以避免直接編寫 SQL 查詢,讓代碼更具可讀性和可維護性。SQL 表達語言:SQLAlchemy 提供了一個靈活的 SQL 表達語言,可以用來構建和執行 SQL 查詢。這對於需要執行複雜查詢的開發者非常有用。
連接池管理:SQLAlchemy 自帶高效的連接池管理功能,允許多個資料庫連接的重用,從而提高應用的性能和穩定性。
資料庫抽象:支援多種資料庫後端,包括
SQLite
、PostgreSQL
、MySQL
、Oracle
、Microsoft SQL Server
等。這意味著你可以輕鬆切換資料庫,而不需要大規模修改代碼。
以上第四點是最重要的。
資料庫操作的四個基本功能
CRUD
是資料庫操作的四個基本功能的縮寫,分別代表建立(Create
)、讀取(Read
)、更新(Update
)和刪除(Delete
)
順便講一下,使用資料庫 vs 寫檔案有什麼優勢:最大的好處就是資料庫能夠同時處理多個用戶的讀寫操作,且通常能夠很好地處理並發衝突和鎖機制;資料庫管理系統(DBMS)提供查詢優化器,可以自動選擇最優的執行計劃來提高查詢性能。
寫檔案沒有以上兩個強大的優點,而都必須要 programmer 自己寫機制去實現。