gpt4 book ai didi

python - sqlalchemy 对象作为字典键?

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:39 24 4
gpt4 key购买 nike

用例是我有一个远程(读取缓慢)数据库,我通过 ORM 映射类从中获取一些数据。

我想将非数据库临时数据与 ORM 数据一起存储,我不想用一堆临时属性污染映射的类命名空间(其他人使用的),这样我就可以存储一些对象具体数据。我真正想做的是将这些用作字典的键。

我看过 this thread所以我知道这是可以做到的,但我不喜欢以下示例:

def __hash__( self ):
return id( self ) if self.id is None else hash( self.id )

因为我的用例包括一个 db set auto_increment 主键,它在刷新之后才会存在。可能更改哈希是哈希的禁忌之一,我想避免它。

如果我在 __hash__ 中放入同花顺,我可以尝试修复它,但感觉副作用太大,不是一个好主意。

因此,问题是:是否有一种好的方法可以使用 ORM 映射的类实例作为字典的键,或者是否有另一种/更好的方法将临时数据与对象相关联而不污染其 namespace ?

最佳答案

考虑将您的本地“非数据库”数据作为非映射属性存储在适当的映射实例中。例如

local_data = {'batsman': 'Sangakkara', 'bowler': 'swann'}
mapped_instance_from_query._local_data = local_data

SQLAlchemy 将简单地忽略未映射的属性。

关于python - sqlalchemy 对象作为字典键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410496/

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