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

Django访问MySQL已有表报not enough arguments for format string如何解决

问题根因

报错是因为inspectdb自动生成的模型代码中,两个字段的db_column属性值包含未转义的%符号:

  • backup_copy_reduction_field对应的db_column='backup-copy-reduction%'
  • clone_copy_reduction_field对应的db_column='clone-copy-reduction%'

Django底层构建SQL查询语句时会把%识别为参数格式化占位符,字段名中自带的%没有经过转义就会触发「format string参数不足」的报错。

解决方法

  1. 转义字段名中的%符号:给两个字段db_column值里的%前额外加一个%完成转义,修改后代码如下:
backup_copy_reduction_field = models.FloatField(db_column='backup-copy-reduction%%', blank=True, null=True)  # Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
clone_copy_reduction_field = models.FloatField(db_column='clone-copy-reduction%%', blank=True, null=True)  # Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
  1. 可选修复隐性问题:你当前__str__方法直接返回BigIntegerField类型的self.ssid,不符合字符串返回要求,建议修改为:
def __str__(self):
    return str(self.ssid)

修改完成后重启Django服务即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:04