错误:1210:执行准备好的语句的参数数量不正确

Ana*_*SWW 5 python mysql database-connection

我正在尝试使用 Python 将数据插入 MySQL。

出现这个错误的原因是什么?

编程错误:1210:执行准备好的语句的参数数量不正确

我的Python代码:

connection = mysql.connector.connect(host='localhost',
                         database='popsww2017',
                         user='root',
                         password='')
records_to_insert = [('---2q7vcZGU', 'Partner-provided', '35', '9s1Pvm0U8Gg8mRavZhVXdg', 'A663893851990558', '1066/2016/HDHT-Pops-Kha Ly', '1467', '0.100598')]
sql_insert_query = "INSERT INTO raw_music (`Video_ID`, `Content_Type`, `Video_Duration`, `Channel_ID`, `Asset_ID`, `Asset_Labels`, `Owned_Views`, `Partner_Revenue`) VALUES ( '%s', '%s' , '%s' , '%s', '%s' , '%s' , '%s' , '%s') "
cursor = connection.cursor(prepared=True)
result  = cursor.executemany(sql_insert_query,records_to_insert)
connection.commit()
Run Code Online (Sandbox Code Playgroud)

我的桌子:

Video_ID    varchar(50) utf8_unicode_ci     
Content_Type    varchar(100)    utf16_unicode_ci        
Video_Duration  int(11)         
Channel_ID  varchar(100)    utf8_unicode_ci     
Asset_ID    varchar(50) utf32_unicode_ci        
Asset_Labels    varchar(400)    utf32_unicode_ci        
Owned_Views int(20)         
Partner_Revenue float   
Run Code Online (Sandbox Code Playgroud)

use*_*900 1

您忘记传递executemany方法参数

result  = cursor.executemany(sql_insert_query,records_to_insert)
Run Code Online (Sandbox Code Playgroud)

MySQLCursor.executemany() 方法语法:

cursor.executemany(operation, seq_of_params)
Run Code Online (Sandbox Code Playgroud)

此方法准备数据库操作(查询或命令),并针对序列 seq_of_params 中找到的所有参数序列或映射执行该操作。

另外,您的语法是错误的(删除引号),请改用以下内容:

records_to_insert = [('---2q7vcZGU', 'Partner-provided', '35', '9s1Pvm0U8Gg8mRavZhVXdg', 'A663893851990558', '1066/2016/HDHT-Pops-Kha Ly', '1467', '0.100598')]
sql_insert_query = "INSERT INTO raw_music (`Video_ID`, `Content_Type`, `Video_Duration`, `Channel_ID`, `Asset_ID`, `Asset_Labels`, `Owned_Views`, `Partner_Revenue`) VALUES ( %s, %s , %s , %s, %s , %s , %s , %s) "
cursor = connection.cursor(prepared=True)
result  = cursor.executemany(sql_insert_query, records_to_insert)
Run Code Online (Sandbox Code Playgroud)