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

Python报TypeError: can only concatenate str (not "int") to str如何解决

报错原因

TypeError: can only concatenate str (not "int") to str 是类型不匹配错误,触发原因是:

  • 你用t4.get()从输入框获取到的内容本身就是字符串类型,执行id= t4.get()+str()后,id变量是字符串类型
  • 后续执行id += 1时,字符串类型不能直接和整数类型做加法运算,因此报错

修复方案

1. 基础修复(解决报错问题)

如果你的逻辑是基于输入的ID值做自增,先把输入内容转成整数类型再做运算,写入数据库时如果需要字符串格式再转回字符串即可:

# 把原代码的 id= t4.get()+str() 替换为下面的代码
# 先将输入的ID转成整数
id = int(t4.get())
for x in result:
    id += 1
    # 如果数据库ids字段是字符串类型,写入前把id转成字符串即可
    val = (str(id), t1.get(), t2.get(), t3.get())
    # 后续执行逻辑保持不变

2. 逻辑优化建议

你当前的代码逻辑存在冗余问题:遍历所有已存在的数据库记录、每条记录对应插入一条新数据,会导致每次调用register都会插入和现有记录条数相同的重复数据,不符合正常注册逻辑。
如果你的需求是生成一个比现有最大ID大1的新ID,可以修改为如下逻辑:

# 不需要拉取全量记录,直接查询数据库最大ID即可
cursors.execute("SELECT MAX(ids) from record")
max_id = cursors.fetchone()[0]
# 以输入ID为基础,或者以数据库最大ID为基准生成新ID
base_id = int(t4.get())
new_id = max(base_id, max_id + 1 if max_id else 1)

sql = "INSERT INTO record(ids, names,course_year,positions) values(%s ,%s ,%s , %s)"
val = (new_id, t1.get(), t2.get(), t3.get())
cursors.execute(sql,val)
databases.commit()

补充说明

如果数据库中的ids字段是整数类型,写入时不需要把id转成字符串,直接传整数即可。

待输入的ID控件截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:27:03