python - 如何在 replit 数据库中存储对象?
问题描述
我在使用 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
当我删除对象时它工作得很好,所以这似乎是导致问题的原因。知道为什么会发生这种情况或可以解决什么问题吗?谢谢。
解决方案
您可以尝试使用该模块将其编码为 JSON 对象json
,首先将其转换为字符串,然后将其存储。我曾经使用环境变量做过类似的事情,但不记得具体细节。
推荐阅读
- ios - 如何在 iOS 上使用 Sign In with Google 修复“用户取消了登录流程。”?
- autohotkey - 无法使用 WinHttpRequest 在 URL 中加载带有磅的网站
- c++ - 过滤与 AddVectoredExceptionHandler 一起使用的严重/致命异常
- java - 本地主机上的服务器 Tomcat v9.0 服务器无法启动。| 子容器在启动期间失败
- python - For 循环根据指定值排除某些 DataFrame 行
- javascript - 如何找到合适的朋友?
- c# - 从 Web 服务器创建和运行 Windows 计划任务,但应使用 Win Auth 连接到 SQL
- python - 通过过滤器匹配字典(其他字典)
- dot - graphviz dot 忽略“等级”约束
- proxy - 编译 bazel,但主机在 SQUID 代理后面