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

众所周知,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)

上边的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQLAlchemy是一个Python编程语言下的开源软件,用于实现数据库的对象关系映射(Object Relational Mapping,ORM)。而SQLAlchemy Mapper则是SQLAlchemy的一个核心组件,用于将数据库格与Python对象进行映射。 Mapper充当了对象与数据库之间的介,将数据库格的结构转化成Python类的结构。通过定义一个Mapper类,我们可以告诉SQLAlchemy如何将格的列对应到Python类的属性。这样,我们可以使用Python类的方式来操作数据库格,避免了直接编写SQL语句的繁琐操作,提高了开发效率。 Mapper类主要包括以下内容: 1. 数据库格的元信息:包括名、列名、数据类型等信息。可以通过定义类的属性来指定格的结构。 2. 数据库连接:Mapper类会与数据库建立连接,通过SQLAlchemy提供的API进行数据库的增删改查操作。 3. 对象与格之间的转换:Mapper类负责将Python对象与数据库格之间进行转换,实现对象的持久化。可以通过定义一对一、一对多等关系来实现对象的关联。 使用SQLAlchemy Mapper的好处有: 1. 简化数据库操作:通过定义Mapper类,我们可以使用Python对象的方式进行数据库的操作,无需直接编写SQL语句,降低了开发难度。 2. 提高代码的可读性和可维护性:通过面向对象的思想,把数据库格映射成为Python类,使代码更加易读易维护。 3. 提高代码的复用性:Mapper类可以被多个模块共享使用,避免了重复编写数据库操作的代码。 4. 支持跨数据库平台:SQLAlchemy提供了对多种数据库的支持,可以轻松切换不同数据库平台而无需修改大量代码。 总之,SQLAlchemy MapperSQLAlchemy的重要组件,通过它,我们可以方便地进行对象与数据库的映射,简化了数据库操作的实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值