gpt4 book ai didi

python - 为什么 sqlalchemy expunge 不起作用?

转载 作者:行者123 更新时间:2023-11-30 21:57:51 26 4
gpt4 key购买 nike

这是我的代码:

class Room(Base):
__tablename__ = 'room'

_id = Column('id', Integer, primary_key=True, autoincrement=True)


def create_room(self):
try:
session = Session()
new_room = Room()
session.add(new_room)
session.expunge(new_room)
session.commit()
session.close()
return new_room
except exc.IntegrityError as e:
logger.error('create room error')
logger.error(e)
return None

我使用 expunge 从 session 中分离对象,然后打印房间 ID:

room = room.create_room()
logger.info('room %d created' % room._id)

但是系统说:

logger.info('room %d created' % room._id)
exceptions.TypeError: %d format: a number is required, not NoneType

为什么会这样?

最佳答案

您需要提交或至少 flush先删除 session ,再删除。

我想房间 ID 是由数据库生成的。如果您在提交之前删除一个对象,它永远不会被插入,并且 ID 永远不会生成和返回,因此它仍然是 None

关于python - 为什么 sqlalchemy expunge 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com