mysql - 将列表插入mysql时,SQL语句中并未使用所有参数
问题描述
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 上关于将列表插入 mysql 的代码的答案。
解决方案
这在 python 3.8.2 中运行
和
import mysql.connector
import datetime
以下代码已更改
- 现在创建表是 detectionT DATETIME
- mysql_lane1_output 现在有 5 个元素
- lane_1_param 更改为使用 %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()
推荐阅读
- youtube-iframe-api - youtube-iframe-api 显示 iframe 中某些视频的视频不可用
- azure-active-directory - 是否可以通过服务主体/应用注册从 Sql Server Management Studio 连接到 Azure Sql 数据库?
- python - 将 df.iloc 与变量一起使用
- regex - 流畅的解析
- python - Django 错误 PermissionDenied 没有属性 set_cookie
- python - 在 KivyMD 中创建多个 ILeftBodyTouch 项目
- netsuite - NetSuite 在 Onchange“行项目”期间获取描述并设置税金
- email - 如何在 Keycloak 中保留待处理的电子邮件地址?
- java - 通过某些两个字段比较两个不同对象的列表
- python - Django文件从shell运行但不运行但自己运行