关于SQLAlchemy中的mapper()函数,即手动ORM方法描述表结构

本文探讨了SQLAlchemy中的两种表结构描述方法:经典描述法和使用mapper()函数的方法。经典方法常见于一个class对应一个表,而mapper()方法则增加了代码的可读性和面向对象特性,虽然代码量有所增加。通过对比,文章阐述了如何使用mapper()来定义表结构,包括Table、MetaData的导入,以及如何在没有使用declarative_base的情况下定义Column和关系,特别是在处理表间关系时的注意事项。
摘要由CSDN通过智能技术生成

众所周知,SQLAlchemy提供两种方法描述表结构,我们经常见到的是一个class一个class的按顺序描述,且其中包含了对Column与各个表之间关系的详细定义,这种方法被称为“经典描述”法。而另一种更符合面向对象思路的方法能够提高代码的灵活性(虽然可能会带来代码量的增加....)。本文将这两种描述方法对比一下,从而更好的理解如何使用mapper()函数描述表结构。

首先我们来看一下经典的描述方法:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey

Base = declarative_base()

class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)

    addresses = relationship("Address", backref="user", order_by="Address.id")

class Address(Base):
    __tablename__ = 'address'

    id = Column(Integer, primary_key=True)
    user_id = Column(ForeignKey('user.id'))
    email_address = Column(String)

上边的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值