在将list插入mysql时,sql语句中并没有使用所有参数

dy1byipe  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(373)
mycursor.execute("CREATE TABLE test_table3(lane smallint UNSIGNED NOT NULL, previousT int NOT NULL, averageT int NOT NULL, detectionT int NOT NULL, carID int PRIMARY KEY AUTO_INCREMENT)")

                mysql_lane1_output = [1, 28, 28, datetime.datetime(2020, 6, 7, 13, 24, 45, 297050)]
                print(mysql_lane1_output)
                lane_1_param = ','.join('?' * len(mysql_lane1_output))
                mysql1 = 'INSERT INTO test_table3 VALUES(%s);'% lane_1_param
                mycursor.execute(mysql1,mysql_lane1_output)
                mydb.commit()

我已经创建了一个表,并希望插入列表项到其中,并不断得到错误'不是所有参数都在sql语句中使用'。我按照stackoverflow上关于将list插入mysql的代码的答案。

6tqwzwtp

6tqwzwtp1#

它在python3.8.2中运行

import mysql.connector
import datetime

以下代码已更改
现在创建表是detectiont datetime
mysql\u lane1\u输出现在有5个元素
车道\u 1 \u参数更改为使用%s而不是?
代码

mycursor.execute("CREATE TABLE IF NOT exists test_table3(lane smallint UNSIGNED NOT NULL, previousT int NOT NULL, averageT int NOT NULL, detectionT DATETIME NOT NULL, carID int PRIMARY KEY AUTO_INCREMENT)")
 mysql_lane1_output = [1, 28, 28, datetime.datetime(2020, 6, 7, 13, 24, 45, 297050),None]
 print(mysql_lane1_output)
 lane_1_param = ','.join(len(mysql_lane1_output)*('%s',))
 mysql1 = 'INSERT INTO test_table3 VALUES(%s);'% lane_1_param
 mycursor.execute(mysql1,mysql_lane1_output)
 mydb.commit()

相关问题