并非所有参数都用于SQL语句(Python,MySQL)

我在以下 Python代码中收到错误
import MysqL.connector
cnx = MysqL.connector.connect(user='root',password='',host='127.0.0.1',database='DB')
cursor = cnx.cursor()

Name = "James"
Department = "Finance"
StartYear = 2001
CurrentPos = 2001
Link = ""

add_user = ("INSERT INTO DB.tbluser "
       "(username,department,startyear,currentpos,link) "
       "VALUES (%s,%s,%d,%s)")
data_user = (Name,Department,StartYear,CurrentPos,Link)
cursor.execute(add_user,data_user)
cnx.commit()
cursor.close()
cnx.close()

错误消息是

MysqL.connector.errors.ProgrammingError: Not all parameters were used in the sql statement

你明白为什么吗

解决方法

参数标记是%s不是%d.
add_user = """INSERT INTO DB.tbluser 
              (username,link) 
              VALUES (%s,%s)"""

请注意,MysqL.connector使用的parameter markers可能与Python字符串格式化中使用的%s可能相同,但关系只是巧合.一些数据库适配器,如我们的sqlsqlite3使用?作为参数标记而不是%s.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03