SQLAlchemy提供ORM方式和SQL方式來操作數據庫。您可以使用原始的SQL語言(或SQLAlachemy SQL Express)進行查詢。
(1)RAW SQL查詢,示例代碼:
engine = create_engine(...)
q = 'SELECT foo FROM t_bar WHERE col_name=:v_parameters'
rs = engine.execute(sqlalchemy.text(q), v_parameters=your_actual_value)
檢查execute和basic usage。也可以看看ResultProxy瞭解如何操作返回的結果。
(2)ORM。如果你想使用ORM,首先你必須定義模型和映射器類。示例代碼。
from sqlalchemy import Column, ForeignKey
from sqlalchemy.types import String, Integer
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Father(Base):
id = Column(Integer, primary_key=True)
name = Column(String(31), unique=True, nullable=False)
# Relationship attributes
children = relationship('Sons',
passive_deletes=True,
back_populates='father')
class Son(Base):
id = Column(Integer, primary_key=True)
name = Column(String(31), unique=True, nullable=False)
# foreign keys
p_id = Column(Integer, ForeignKey('Father.id',
ondelete='CASCADE',
onupdate='CASCADE'))
# Relationship attributes
parent = relationship('Father',
passive_deletes=True,
back_populates='sons')
然後,你可以做ORM查詢操作
session.query(Father).join(Father.sons).filter(Son.name=='Sam')
等於SQL查詢
SELECT father.id, father.name FROM father JOIN son ON father.id=son.p_id WHERE son.name='Sam'.
請檢查ORM mapper和ORM Query以獲取更多信息。
適合您的應用程序。如果你已經很好地映射了所有的表格,那麼你可以使用ORM方式。如果你不需要ORM功能,你可以使用RAW SQL查詢。
謝謝。