Структура моей базы данных примерно такая (я использую декларативный стиль):
class Character(Base):
__tablename__="characters"
id = Column(Integer, primary_key=True)
name = Column(String)
player = Column(String)
inventory = relation(Inventory)
class Item(Base):
__tablename__="items"
id = Column(Integer, primary_key=True)
name = Column(String)
class Inventory(Base):
__tablename__="inventory"
id = Column(Integer, primary_key=True)
char_id = Column(Integer, ForeignKey("characters.id"))
item_id = Column(Integer, ForeignKey("characters.id"))
quantity = Column(Integer)
item = relation(Item)
Моя проблема в том, что когда я удаляю объект «Инвентарь» из «Character.inventory», он не обновляется до тех пор, пока сеанс не будет зафиксирован. Например:
>>> torch_inv=character.inventory[0] # Inventory object referred to a torch
>>> torch_inv.item, torch_inv.quantity
(<Item object, torch>, 3)
>>> session.delete(torch_inv)
>>> character.inventory[0]
<Inventory object, torch>
Я видел, что есть вариант отношения «каскад», но я не могу найти способ заставить его работать в этом случае.
item_id
ссылается наcharacters.id
?) - person bobince   schedule 04.01.2010