SQLAlchemy Core - 建立表



現在讓我們討論如何使用建立表函式。

SQL 表示式語言根據表列構建其表示式。SQLAlchemy 的 Column 物件表示資料庫表中的一,而資料庫表由Table 物件表示。元資料包含表和相關物件的定義,例如索引、檢視、觸發器等。

因此,來自 SQLAlchemy 元資料的 MetaData 類的物件是 Table 物件及其相關模式結構的集合。它儲存 Table 物件的集合以及對 Engine 或 Connection 的可選繫結。

from sqlalchemy import MetaData
meta = MetaData()

MetaData 類的建構函式可以具有 bind 和 schema 引數,它們預設為None

接下來,我們使用Table 建構函式在上述元資料目錄中定義所有表,這類似於常規的 SQL CREATE TABLE 語句。

Table 類的一個物件表示資料庫中相應的表。建構函式採用以下引數:

名稱 表的名稱
元資料 將儲存此表的 MetaData 物件
一個或多個 column 類的物件

Column 物件表示資料庫表中的一。建構函式採用名稱、型別以及其他引數,例如 primary_key、autoincrement 和其他約束。

SQLAlchemy 將 Python 資料與其中定義的最佳可能的通用列資料型別匹配。一些通用資料型別包括:

  • BigInteger
  • Boolean
  • Date
  • DateTime
  • Float
  • Integer
  • Numeric
  • SmallInteger
  • String
  • Text
  • Time

要在一個 college 資料庫中建立一個學生表,請使用以下程式碼片段:

from sqlalchemy import Table, Column, Integer, String, MetaData
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String), 
)

create_all() 函式使用 engine 物件建立所有已定義的表物件並將資訊儲存在元資料中。

meta.create_all(engine)

完整的程式碼如下所示,它將在當前工作目錄中建立一個包含學生表的 SQLite 資料庫 college.db。

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String),
)
meta.create_all(engine)

因為 create_engine() 函式的 echo 屬性設定為True,所以控制檯將顯示用於表建立的實際 SQL 查詢,如下所示:

CREATE TABLE students (
   id INTEGER NOT NULL,
   name VARCHAR,
   lastname VARCHAR,
   PRIMARY KEY (id)
)

college.db 將在當前工作目錄中建立。要檢查學生表是否已建立,可以使用任何 SQLite GUI 工具(例如SQLiteStudio)開啟資料庫。

下圖顯示了在資料庫中建立的學生表:

Students Table
廣告
© . All rights reserved.