python SqlAlchemy ORM

  1. 什么是ORM
  2. 经典映射模式
  3. 关系映射模式
  4. ORM事件

什么是ORM

ORM(Object Relationship Mapping)是一种将数据库表和对象的关系映射起来的方法。是完整软件的必要部分,将数据持久化。

映射关系如下图所示

常用的ORM框架是SqlAlchemy,它提供了一个简单接口,无需使用SQL语句就可以完成对数据库的操作。

经典映射模式

使用经典映射模式,有一个好处就是将对象和表之间的映射关系解耦,将数据库的操作抽象出来,提高代码的可维护性。

model.py
class Device:
    def __init__(self, device_id: str):
        self.device_id: str = device_id
        self.hostname: str = ''
        self.version: str = ''
orm.py
from sqlalchemy.orm import mapper, relationship
from sqlalchemy import (
    Table,
    MetaData,
    Column,
    Integer,
    String
)

import model
metadata = MetaData()
devices = Table( 'devices', metadata, Column('id', Integer, primary_key=True, autoincrement=True), Column('device_id', String(255), nullable=False), Column('hostname', String(255)), Column('version', String(255)) )
def start_mapper(): mapper(model.Device, devices)

关系映射模式

使用方法参考python sqlalchemy 继承关系表

ORM事件

当ORM与类属性映射不能做到一一对应的情况下,重新获取类时没有覆盖到的属性不会被初始化,这种情况下,可以使用load事件在创建实例后立即对属性进行初始化。

orm.py
from sqlalchemy import event

@event.listens_for(Device, 'load') def receive_load(target, _): target.uname = 'uname'

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com