You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Alexa技能向Replit DB存数据时触发Circular Reference错误如何解决?

错误原因

  1. Replit数据库存储数据时会先将数据序列化为JSON格式,你直接将自定义Identity类的实例存入数据库,默认的序列化逻辑无法正确处理自定义类对象,且如果Identity类内部存在自引用属性、或者你重复存入同一个实例的多个引用,就会触发循环引用报错。
  2. 你的代码里存在大量同一实例的别名赋值:比如orb = tri、quad = tor、akr = lir、aks = lis,这些变量指向同一个内存地址的对象,重复存入数据库时序列化器检测到重复引用,也会触发报错。
  3. 代码还存在多处笔误,会导致数据不符合预期:
    • 定义aro时错误修改了ace的name和description属性,覆盖了之前定义的无性恋相关数据
    • 定义tor时错误修改了tri的description属性
    • 定义aks时错误修改了lis的name属性

解决方案

第一步:修复别名赋值和笔误

所有别名身份单独创建Identity实例,不要直接赋值引用,同时修正所有笔误:

# 原orb = tri改为:
orb = Identity()
orb.name = "Orbisian"
orb.description = tri.description # 描述和tri一致就直接复用值,不要复用实例

# 原quad = tor改为:
quad = Identity()
quad.name = "Quadrisian"
quad.description = tor.description

# 原akr = lir改为:
akr = Identity()
akr.name = "Akoiromantic"
akr.description = lir.description

# 原aks = lis改为:
aks = Identity()
aks.name = "Akoisexual"
aks.description = lis.description

# 修正aro相关笔误
aro = Identity()
aro.name = "Aromantic" # 原代码写成了ace.name
aro.description = "Umbrella term for not experiencing or having a non-conventional form of experiencing romantic attraction." # 原代码写成了ace.description

# 修正tor相关笔误
tor.description = "Exclusive attraction to men by non binary people." # 原代码写成了tri.description

第二步:改为存入字典类型数据

不要直接存入Identity实例,转成可被JSON序列化的字典结构再存储:

# 可以写一个通用转换函数,也可以手动转换
def identity_to_dict(iden):
    return {
        "name": iden.name,
        "description": iden.description
    }

# 存储时调用转换
db[0] = identity_to_dict(les)
db[1] = identity_to_dict(gay)
# 其他所有存储项都按这个方式修改

第三步:调整读取逻辑

后续读取数据时,将读取到的字典再转回Identity实例即可:

def get_identity(name):
    for key in db.keys():
        val = db[key]
        if isinstance(val, dict) and val.get("name") == name:
            iden = Identity()
            iden.name = val["name"]
            iden.description = val["description"]
            return iden
    return None

内容的提问来源于stack exchange,提问作者CassieCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:54:03