開始使用免費開始

從資料庫自動載入資料表

SQLAlchemy 可以透過所謂的 reflection 來自動從資料庫載入資料表。Reflection 是讀取資料庫並依此建立中繼資料(metadata)的過程。這與手動建立 Table 的做法相反,對於需要操作既有資料庫時非常實用。

在進行 reflection 之前,你需要先匯入並初始化一個 MetaData 物件。MetaData 物件包含資料庫中資料表的相關資訊。在 reflection 過程中,MetaData 物件會自動填入被反映之資料表的資訊,所以只要在反映之前呼叫 MetaData() 完成初始化即可。

你也需要從 SQLAlchemy 套件匯入 Table 物件。接著使用這個 Table 物件,從 engine 讀取資料表、自動載入欄位,並填入中繼資料。這可以透過單一次呼叫 Table() 完成:以這種方式使用 Table 很像把引數傳給函式。例如,若要使用 engine 自動載入欄位,你需要在 Table() 中指定關鍵字引數 autoload=Trueautoload_with=engine

最後,若要查看你剛建立物件的資訊,請使用 repr() 函式。對任何 Python 物件而言,repr() 都會回傳該物件的文字表示。對於 SQLAlchemy 的 Table 物件,則會回傳該資料表在中繼資料中所包含的資訊。

在本練習中,你的工作是將在 engine 上可用的 "census" 資料表反映(reflect)到名為 census 的變數中。我們已經預先填入了上一題你寫過、用來建立 engine 的程式碼。

本練習屬於課程

Python 資料庫入門

檢視課程

練習說明

  • sqlalchemy 匯入 TableMetaData
  • 建立一個 MetaData 物件:metadata
  • 使用 Table 物件並傳入以下引數來反映 census 資料表:
    • 以字串形式的資料表名稱('census')。
    • 你剛初始化的 metadata。
    • autoload=True
    • 要用來自動載入的 engine——在此為 engine
  • 使用 repr() 函式列印 census 的詳細資訊。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
編輯並執行程式碼