问题 :AttributeError: 'SPU' object has no attribute 'events'
orm
from sqlalchemy import MetaData, Table, String
from sqlalchemy.orm import mapper
import model
metadata = MetaData()
spu = Table(
'spu', metadata,
Column('name', String(255), primary_key=True),
Column('title', String(255)),
Column('pictures', String(1023)),
Column('details', String(1023)),
Column('is_sale', Boolean),
)
mapper(model.SPU, spu)
model
class SPU:
def __init__(self, name, title, details, pictures):
self.name = name
self.title = title
self.details = details
self.pictures = pictures
self.is_sale = False
self.events = []
可以看到,在sqlalchemy的Table里面并没有events字段
原因:存在成员但不存入数据库的时候需要监听事件再添加
改正后的orm代码
from sqlalchemy import MetaData, Table, String, event
from sqlalchemy.orm import mapper
import model
metadata = MetaData()
spu = Table(
'spu', metadata,
Column('name', String(255), primary_key=True),
Column('title', String(255)),
Column('pictures', String(1023)),
Column('details', String(1023)),
Column('is_sale', Boolean),
)
mapper(model.SPU, spu)
@event.listens_for(model.SPU, 'load')
def receive_spu_load(spu, _)
spu.events = []