【发布时间】:2021-12-11 05:54:40
【问题描述】:
我在使用 repl.it 数据库时遇到了一些问题。我正在尝试使用以下代码存储一堆数据以及其中的一个对象:
db[message.author.id] = {
"creation_date": datetime.datetime.now().strftime("%Y-%m-%d"),
"tutorial_completed": False,
"money": 0,
"properties": [shack] # < the object
}
但是,每当我尝试运行它时,我都会收到以下错误:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "main.py", line 116, in on_message
db[message.author.id] = {
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/replit/database/database.py", line 491, in __setitem__
self.set(key, value)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/replit/database/database.py", line 500, in set
self.set_raw(key, _dumps(value))
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/replit/database/database.py", line 56, in dumps
return json.dumps(val, separators=(",", ":"), cls=DBJSONEncoder)
File "/usr/lib/python3.8/json/__init__.py", line 234, in dumps
return cls(
File "/usr/lib/python3.8/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.8/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
ValueError: Circular reference detected
当我删除对象时它工作得很好,所以这似乎是导致问题的原因。 知道为什么会发生这种情况或可以解决什么问题吗?谢谢。
【问题讨论】:
-
everything 是 Python 中的一个对象。
-
我明白,我只是对一般的编码比较陌生,不知道正确的术语。也许是一个类的实例?无论哪种方式,它都不起作用,我不确定为什么。
-
好吧,一切都是类的实例。在这里,这个工具似乎使用了自定义 JSON 编码器,但阅读文档,似乎 DB 只支持基本的 JSON 类型。所以我认为无论如何都不能使用您的自定义对象。
-
哦,好的,感谢您的帮助! :)
-
是的,我不是 100% 确定,但我怀疑是这样