從資料庫自動載入資料表
SQLAlchemy 可以透過所謂的 reflection 來自動從資料庫載入資料表。Reflection 是讀取資料庫並依此建立中繼資料(metadata)的過程。這與手動建立 Table 的做法相反,對於需要操作既有資料庫時非常實用。
在進行 reflection 之前,你需要先匯入並初始化一個 MetaData 物件。MetaData 物件包含資料庫中資料表的相關資訊。在 reflection 過程中,MetaData 物件會自動填入被反映之資料表的資訊,所以只要在反映之前呼叫 MetaData() 完成初始化即可。
你也需要從 SQLAlchemy 套件匯入 Table 物件。接著使用這個 Table 物件,從 engine 讀取資料表、自動載入欄位,並填入中繼資料。這可以透過單一次呼叫 Table() 完成:以這種方式使用 Table 很像把引數傳給函式。例如,若要使用 engine 自動載入欄位,你需要在 Table() 中指定關鍵字引數 autoload=True 與 autoload_with=engine。
最後,若要查看你剛建立物件的資訊,請使用 repr() 函式。對任何 Python 物件而言,repr() 都會回傳該物件的文字表示。對於 SQLAlchemy 的 Table 物件,則會回傳該資料表在中繼資料中所包含的資訊。
在本練習中,你的工作是將在 engine 上可用的 "census" 資料表反映(reflect)到名為 census 的變數中。我們已經預先填入了上一題你寫過、用來建立 engine 的程式碼。
本練習屬於課程
Python 資料庫入門
練習說明
- 從
sqlalchemy匯入Table與MetaData。 - 建立一個
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(____)