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

标签 python mysql pymysql

谁能帮忙,我不知道为什么它总是返回错误

ERROR: Not enough arguments for format string

它是从一个 csv 中读取的,其中的标题被命名为 Property ID、Reference Number 等。唯一的区别是在表列名称中添加了 _。

这是我的引用脚本:

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。因此,您告诉游标将一段数据发送到数据库,但游标不知道将数据插入到何处。您可能忘记在 INSERT INTO 语句中包含一列,或者您的语句中有额外的 %s

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

关于python - 格式字符串mysql错误的参数不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947346/

相关文章:

python - 使用参数时无法使用 PyMySQL 插入数据

python - 仅当从另一个程序运行时才出现 Unicode 错误?

PHP 将字符串转换为持续时间

PHP 如何在 url 中指定 "back one directory level"

mysql - SQL 在执行 select unique/group by 时根据键选择特定行

python - 如何使用 Python 检查用户和密码是否已在 MySQL 数据库中?

mysql - 网站显示 � 即使我正在使用 utf-8

python - 查找字符串及其切片内的子字符串?

python - 在计数操作python中显示列表中的重复项

python - 如何通过提供外部文件作为参数来运行Docker容器