Hello World(SQLAlchemy ORM)
此示例顯示如何使用 SQLAlchemy ORM 建立表,插入資料以及從資料庫中進行選擇。有關資訊: SQLAlchemy Core,請參閱此處 。
首先,我們需要連線到我們的資料庫,這與我們使用 SQLAlchemy Core(Core)
連線的方式相同。
from sqlalchemy import create_engine
engine = create_engine('sqlite://')
在連線和建立引擎之後,我們需要定義和建立表。這是 SQLAlchemy ORM 語言開始與 Core 大不相同的地方。在 ORM 中,表建立和定義過程首先定義表和我們將用於對映到這些表的類。此過程在 ORM 中的一個步驟中完成,SQLAlchemy 將其稱為 Declarative 系統。
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
既然宣告瞭我們的基本對映器,我們可以從它繼承它來構建我們的宣告性對映 ,或者 models
。
from sqlalchemy import Column, Integer, String
class Message(Base):
__tablename__ = 'messages'
id = Column(Integer, primary_key=True)
message = Column(String)
使用宣告性基類,我們最終建立了一個 Table
和 Mapper
物件。來自文件:
Table 物件是一個名為 MetaData 的較大集合的成員。使用 Declarative 時,可以使用宣告性基類的 .metadata 屬性來使用此物件。
考慮到這一點,要建立所有尚不存在的表,我們可以呼叫下面的命令,該命令使用 SQLAlchemy Core 的 MetaData 登錄檔。
Base.metadata.create_all(engine)
現在我們的表被對映和建立,我們可以插入資料! 插入是通過建立對映器例項完成的 。
message = Message(message="Hello World!")
message.message # 'Hello World!
此時,我們所擁有的只是 ORM 抽象級別級別的訊息例項,但尚未將任何內容儲存到資料庫中。要做到這一點,首先我們需要建立一個會話 。
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
此會話物件是我們的資料庫處理程式根據 SQLAlchemy 文件:
它從引擎維護的連線池中檢索連線,並保持連線,直到我們提交所有更改和/或關閉會話物件。
現在我們有了會話,我們可以將新訊息新增到會話並將更改提交到資料庫。
session.add(message)
session.commit()
現在我們有了資料,我們可以利用 ORM 查詢語言來提取資料。
query = session.query(Message)
instance = query.first()
print (instance.message) # Hello World!
但那只是一個開始! 還有更多可用於撰寫查詢的功能,如 filter
,order_by
等等。有關更多示例和資訊,請參閱 SQLAlchemy ORM 教程 。