Python 格式字符串mysql错误的参数不足
有人能帮忙吗,我不知道为什么它总是重复这个错误 错误:格式字符串的参数不足 它从csv读取,其中标题命名为属性ID、参考号等。唯一的区别是在表列名中添加了u 以下是我的脚本供参考: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
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的列数,但仍然得到了相同的消息:(你能将更新后的代码作为对原始问题的编辑发布吗