Python 格式字符串mysql错误的参数不足

Python 格式字符串mysql错误的参数不足,python,mysql,pymysql,Python,Mysql,Pymysql,有人能帮忙吗,我不知道为什么它总是重复这个错误 错误:格式字符串的参数不足 它从csv读取,其中标题命名为属性ID、参考号等。唯一的区别是在表列名中添加了u 以下是我的脚本供参考: import csv import pymysql mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='jupix', unix_socket="/Applications/MAMP/tmp/mysql/mysql.so

有人能帮忙吗,我不知道为什么它总是重复这个错误

错误:格式字符串的参数不足

它从csv读取,其中标题命名为属性ID、参考号等。唯一的区别是在表列名中添加了u

以下是我的脚本供参考:

import csv
import pymysql


mydb = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='jupix', unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock")
cursor = mydb.cursor()

with open("activeproperties.csv") as f:
    reader = csv.reader(f)
   # next(reader) # skip header
    data = []
    for row in reader:
    cursor.executemany('INSERT INTO ACTIVE_PROPERTIES(Property_ID, Reference_Number,Address_Name,Address_Number,Address_Street,Address_2,Address_3,Address_4,Address_Postcode,Owner_Contact_ID,Owner_Name,Owner_Number_Type_1,Owner_Contact_Number_1,Owner_Number_Type_2,Owner_Contact_Number_2,Owner_Number_Type_3,Owner_Contact_Number_3,Owner_Email_Address,Display_Property_Type,Property_Type,Property_Style,Property_Bedrooms,Property_Bathrooms,Property_Ensuites,Property_Toilets,Property_Reception_Rooms,Property_Kitchens,Floor_Area_Sq_Ft,Acres,Rent,Rent_Frequency,Furnished,Next_Available_Date,Property_Status,Office_Name,Negotiator,Date_Created)''VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', row) 

mydb.commit()
cursor.close()
print"Imported!"

发生此错误的原因是您有37列要插入数据,但有38个输入要发送到数据库,即
%s
。因此,您告诉光标向数据库发送一段数据,但光标不知道将数据插入到何处。您可能忘记在
插入到
语句中包含一列,或者在语句中有一个额外的
%s


因此,您需要删除SQL语句中的一个
%s
,或者在数据库中添加一列以将最后一段数据发送到

当您有大量列时,确保每个列都有一个
%s
可能是一个挑战。INSERT有另一种语法,使其更简单

与此相反:

INSERT INTO ACTIVE_PROPERTIES(Property_ID, Reference_Number,
  Address_Name, Address_Number, Address_Street, Address_2, Address_3,
  Address_4, Address_Postcode, Owner_Contact_ID, Owner_Name,
  Owner_Number_Type_1, Owner_Contact_Number_1, Owner_Number_Type_2,
  Owner_Contact_Number_2, Owner_Number_Type_3, Owner_Contact_Number_3,
  Owner_Email_Address, Display_Property_Type, Property_Type,
  Property_Style, Property_Bedrooms, Property_Bathrooms, Property_Ensuites,
  Property_Toilets, Property_Reception_Rooms, Property_Kitchens,
  Floor_Area_Sq_Ft, Acres, Rent, Rent_Frequency, Furnished,
  Next_Available_Date, Property_Status, Office_Name, Negotiator,
  Date_Created)
VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
  %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
  %s, %s, %s, %s, %s)
请尝试以下操作,以便更轻松地将列与
%s
参数进行匹配,从而避免计算错误:

INSERT INTO ACTIVE_PROPERTIES
SET Property_ID = %s,
  Reference_Number = %s,
  Address_Name = %s,
  Address_Number = %s,
  Address_Street = %s,
  Address_2 = %s,
  Address_3 = %s,
  Address_4 = %s,
  Address_Postcode = %s,
  Owner_Contact_ID = %s,
  Owner_Name = %s,
  Owner_Number_Type_1 = %s,
  Owner_Contact_Number_1 = %s,
  Owner_Number_Type_2 = %s,
  Owner_Contact_Number_2 = %s,
  Owner_Number_Type_3 = %s,
  Owner_Contact_Number_3 = %s,
  Owner_Email_Address = %s,
  Display_Property_Type = %s,
  Property_Type = %s,
  Property_Style = %s,
  Property_Bedrooms = %s,
  Property_Bathrooms = %s,
  Property_Ensuites = %s,
  Property_Toilets = %s,
  Property_Reception_Rooms = %s,
  Property_Kitchens = %s,
  Floor_Area_Sq_Ft = %s,
  Acres = %s,
  Rent = %s,
  Rent_Frequency = %s,
  Furnished = %s,
  Next_Available_Date = %s,
  Property_Status = %s,
  Office_Name = %s,
  Negotiator = %s,
  Date_Created = %s;

它不是标准的SQL,但MySQL支持它。它在内部也做同样的事情,只是更方便的语法,至少在一次插入一行时是这样。

可以打印行对象吗?似乎没有足够的条目来填充您的所有值不确定您的意思是什么?
%s
是由
对象的内容填充的,因此它必须是一个包含与
%s
s条目的列表。因为你得到了一个格式错误,我假设不是这样。哦,我刚刚意识到你在循环中的意图是关闭的。你有37列,但38%是问题所在。我已经更正了数量,但我仍然收到相同的错误消息“格式字符串的参数不够”。我有37列和37%s,那么是什么导致了这个错误?我已经更正了现在和%s的列数,但仍然得到了相同的消息:(你能将更新后的代码作为对原始问题的编辑发布吗