You need to enable JavaScript to run this app. 创建ChatBot实例时触发sqlalchemy.exc.ArgumentError报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

创建ChatBot实例时触发sqlalchemy.exc.ArgumentError报错如何解决

问题原因

你遇到的报错是chatterbot v1.1.0a7与SQLAlchemy 1.4+版本API不兼容导致的:SQLAlchemy 1.4版本对Dialect.has_table()方法做了两处调整:一是要求传入的第一个参数必须是Connection对象而非Engine对象,二是将该方法划为内部方法,公开场景推荐使用inspect(engine).has_table()的写法,而chatterbot v1.1.0a7的SQL存储适配器还在使用旧版API,因此触发报错。该报错和本地SQL服务是否启动、ChatBot名称格式无关联。

解决方案

以下三个方案任选其一即可:

方案1:降级SQLAlchemy到适配版本(操作最简单)

chatterbot v1.1系列适配的是SQLAlchemy 1.3.x版本,直接执行以下命令替换版本即可:

pip uninstall sqlalchemy -y
pip install sqlalchemy==1.3.24

安装完成后重新运行原代码即可正常初始化ChatBot实例。

方案2:手动修改chatterbot源码适配新版SQLAlchemy(不想降级依赖可选)

打开报错提示中的SQL存储适配器文件:/usr/local/lib/python3.9/site-packages/ChatterBot-1.1.0a7-py3.9.egg/chatterbot/storage/sql_storage.py

  1. 在文件头部新增导入语句:
from sqlalchemy import inspect
  1. 找到第46行附近调用has_table的代码,原代码类似:
if not engine.dialect.has_table(engine, table_name):

替换为:

if not inspect(engine).has_table(table_name):

保存修改后重新运行代码即可。

方案3:使用MongoDB作为存储后端

你已经验证MongoDatabaseAdapter无适配问题,如果项目接受MongoDB作为存储,可以在初始化时指定存储适配器即可绕过SQL适配问题:

from chatterbot import ChatBot

bot = ChatBot(
    "The Royal Zhao",
    storage_adapter="chatterbot.storage.MongoDatabaseAdapter"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 17:24:00