May 2025
Intermediate to advanced
208 pages
2h 36m
Chinese
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
本章与前几章不同,每一节都侧重于使用 SQLAlchemy 的不同方面。这里的内容不像前几章那么详细;可以把它看作是有用工具的快速介绍。 在每一节的末尾,如果您有兴趣,可以了解更多信息。这些章节并不是完整的教程,而是介绍如何完成特定任务的简短食谱。本章的第一部分重点介绍了 SQLAlchemy 的一些高级用法,第二部分介绍了如何将 SQLAlchemy 与 Flask 等 Web 框架结合使用,最后一部分则介绍了可与 SQLAlchemy 结合使用的其他库。
混合属性在作为类方法访问时表现出一种行为,而在实例上访问时又表现出另一种行为。另一种理解方式是,属性在 SQLAlchemy 语句中使用时将生成有效的 SQL,而在实例上访问时,混合属性将直接针对实例执行 Python 代码。我发现在查看代码时最容易理解这一点。在例 14-1 中,我们将使用Cookie 声明类来说明这一点。
fromdatetimeimportdatetimefromsqlalchemyimportColumn,Integer,Numeric,String,create_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemy.ext.hybridimporthybrid_property,hybrid_methodfromsqlalchemy.ormimportsessionmakerengine=create_engine('sqlite:///:memory:')Base=declarative_base()classCookie(Base):__tablename__='cookies'cookie_id=Column(Integer,primary_key=True)cookie_name=Column(String(50),index=True)cookie_recipe_url=Column(String(255))cookie_sku=Column(String(55))quantity=Column(Integer())unit_cost=Column(Numeric(12,2))@hybrid_propertydefinventory_value(self):returnself.unit_cost*self.quantity@hybrid_methoddefbake_more(self,min_quantity):returnself.quantity<min_quantitydef ...
Read now
Unlock full access