【问题标题】:Incorrect integer value: '%s' for column `materialdatabase`.`tensilesummary`.`batchnumber` at row 1不正确的整数值:列“materialdatabase”的“%s”。“tensilesummary”。“batchnumber”在第 1 行
【发布时间】:2020-02-21 23:32:57
【问题描述】:
batchnumbers = [1,2,3,4,5,6,7,8,9,10] 
def update_batchnum():
    try:
        for num in range(len(batchnumbers)):
            query = ("INSERT INTO tensilesummary(batchnumber) VALUES ('%s');")
            cursor.execute(query,batchnumbers[num])
            mariadb_connection.commit() 
            print("Batchnumber successfullt inserted into tensilesummary table")

    except mysql.connector.Error as error: 
        print("Failed using updatebatchnum to insert into tensilesummary table:{}".format(error))

update_batchnum()

返回错误:使用 updatebatchnum 插入到张量汇总表中失败:1366 (22007):整数值不正确:第 1 行 materialdatabase.tensilesummary.batchnumber 列的“%s”。

我尝试在 my.ini 中更改 sql_mode = "" 但它不起作用。

【问题讨论】:

  • 这可能意味着您的 id 是一个 AUTO_INCREMENT 整数并且您正在尝试发送一个字符串。您应该指定一个列列表并将其从 INSERT 中省略。
  • 对不起,我真的是 sql 新手,我不太清楚你的意思?你能再解释一下吗?
  • 您没有显示创建光标的代码。如果你想使用参数化查询(使用values 中的'%s'),你需要像这样创建它:cursor = connection.cursor(prepared=True)

标签: python sql sql-server mariadb


【解决方案1】:
  1. 使用占位符时,不要将它们放在引号中,附加分号也很浪费空间。

query = "INSERT INTO tensilesummary (batchnumber) VALUES (%s)"

  1. 根据 DBAPI 2.0 (PEP-249) cursor.execute 的第二个参数必须是一个元组,所以它应该是(batchnumbers[num],)

【讨论】:

    猜你喜欢
    • 2017-05-24
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多