【问题标题】:Insert into with Cursor.executemany and a Python list使用 Cursor.executemany 和 Python 列表插入
【发布时间】:2021-05-03 15:39:17
【问题描述】:

有人可以向我解释一下这段代码有什么问题吗?我收到“参数类型不受支持”错误。不能将列表输入 cursor.executemany 吗?列的类型是浮点数而不是空值。

random_numbers = [
    1,
    2,
    3,
]

cursor.executemany('INSERT INTO Table (Column) VALUES (?)', random_numbers)

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

    cursor.executemany 的值必须是 元组的序列

    cursor.executemany('INSERT INTO Table (Column) VALUES (?)', 
                       [(n,) for n in random_numbers])
    

    这是cursor.execute 的逻辑扩展,需要一个tuple 作为values 参数。

    【讨论】:

    • 谢谢,我想我明白了,但是当我运行它时仍然出现错误 - “int object is not iterable”
    • 我的错,tuple(n) 仅在 n 是可迭代的情况下才有效。新版本应该可以工作。
    • 啊,太棒了,谢谢。我检查了 - 你在第一个 n 之后放置的尾随逗号是必需的 - 我确实读过一些关于为什么但并没有真正理解的东西,所以我会再过一遍。非常感谢。
    • 尾随逗号是创建元组的原因。
    • import random random_numbers.clear() random_numbers = [] for i in range(1000): random_numbers.append((random.randint(10,25),)) cursor.executemany('INSERT INTO Pressure VALUES (?)', random_numbers) 我很高兴地说这也有效!
    猜你喜欢
    • 2020-05-23
    • 2020-08-18
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多