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

如何向SQLite3插入数字序列?解决TypeError报错问题

解决SQLite3 executemany插入数据时的TypeError问题

咱们先来拆解你遇到的错误:TypeError: 'int' object is not iterable,问题出在executemany()方法的使用逻辑上。

错误原因

cursor.executemany()的设计目的是批量插入多条数据,它要求第二个参数是一个可迭代的参数集合(比如列表、元组,其中每个元素又是对应SQL占位符的小元组/列表)。而你在循环里直接传了单个整数x,Python尝试遍历这个整数来生成插入数据时,自然会报错——整数可不是可迭代对象呀。

两种修正方案

方案1:用executemany批量插入(推荐,效率更高)

既然要插入一个数字序列,咱们可以一次性生成所有待插入的数据集合,然后传给executemany(),不用写循环:

import sqlite3

connector = sqlite3.connect("Database_1.db")
cursor = connector.cursor()

def Table_making():
    cursor.execute("CREATE TABLE IF NOT EXISTS Tester(Tester_1 INT)")

def data_entry():
    # 生成包含所有数据的元组列表:每个元素是(数字,)这样的单元素元组
    data_list = [(x,) for x in range(1, 10)]
    cursor.executemany("INSERT INTO Tester(Tester_1) VALUES(?)", data_list)
    connector.commit()
    cursor.close()
    connector.close()

Table_making()
data_entry()

方案2:循环中用execute插入单条数据

如果更习惯逐条插入的逻辑,那应该用cursor.execute()而不是executemany(),每次传入对应单条数据的参数元组(注意逗号不能少,否则会被当成单个整数而非元组):

import sqlite3

connector = sqlite3.connect("Database_1.db")
cursor = connector.cursor()

def Table_making():
    cursor.execute("CREATE TABLE IF NOT EXISTS Tester(Tester_1 INT)")

def data_entry():
    for x in range(1, 10):
        cursor.execute("INSERT INTO Tester(Tester_1) VALUES(?)", (x,))
    connector.commit()
    cursor.close()
    connector.close()

Table_making()
data_entry()

额外优化建议:用上下文管理器自动管理连接

手动关闭游标和连接容易出错,推荐使用with语句(上下文管理器)来自动处理连接的打开、提交和关闭,代码更简洁可靠:

import sqlite3

def Table_making_and_insert():
    with sqlite3.connect("Database_1.db") as connector:
        cursor = connector.cursor()
        cursor.execute("CREATE TABLE IF NOT EXISTS Tester(Tester_1 INT)")
        # 批量插入数据
        data_list = [(x,) for x in range(1, 10)]
        cursor.executemany("INSERT INTO Tester(Tester_1) VALUES(?)", data_list)
    # with块结束后,连接会自动提交并关闭,无需手动操作

Table_making_and_insert()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:33