Python Don';我不明白这一点;SQL语句的参数不足;错误

Python Don';我不明白这一点;SQL语句的参数不足;错误,python,mysql,Python,Mysql,上面的代码导出到csv文件,然后尝试将其导入到不同服务器上的相同表中 SQL语句的参数不足 即使我导入到只有两列的表时,也会发生此错误。请将第70行更改为以下内容: # Import libraries import os, re, subprocess, pyautogui, time, datetime, io import mysql.connector import csv connection = mysql.connector.connect( user="xxxxx"

上面的代码导出到csv文件,然后尝试将其导入到不同服务器上的相同表中

SQL语句的参数不足
即使我导入到只有两列的表时,也会发生此错误。请将第70行更改为以下内容:

# Import libraries
import os, re, subprocess, pyautogui, time, datetime, io
import mysql.connector
import csv


connection = mysql.connector.connect(
    user="xxxxx", password="xxxxxx", host="192.168.0.6", database="xxx"
)

cur = connection.cursor(buffered=True)

table = "inmuebles"

query = "SELECT * FROM %s;" % table

cur.execute(query)

with io.open("test.csv", "w", encoding="utf-8") as f:
    writer = csv.writer(f, delimiter=";")
    for row in cur.fetchall():
        writer.writerow(row)

connection.commit()
cur.close()
connection.close()


##############
### IMPORT ###
##############

connection = mysql.connector.connect(
    user="xxxxx", password="xxxxx", host="xxxxx", database="xxxx"
)

cur = connection.cursor(buffered=True)

sql = "SELECT count(*) FROM inmuebles_test"

try:
    cur.execute(sql)
    results = cur.fetchall()
    for row in results:
        count = row[0]
        print("Initially there are %d rows in table" % (count))

except:
    print("Error: unable to fetch data")

cr = csv.reader(open("test.csv", "r", encoding="utf-8"), delimiter=";")
i = 1
next(cr)
for row in cr:
    print(row)
    print("inserting row-%d into Db" % (i))
    # cur.execute("INSERT INTO inmuebles_test 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, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",row)
    # connection.commit()
    i = i + 1
    if i > 10:
        break

try:
    cur.execute(sql)
    results = cur.fetchall()
    for row in results:
        count = row[0]
        print("Finally there are %d rows in table" % (count))

except:
    print("Error: unable to fetch data")

cur.close()
connection.close()
如果我注释掉第70-71行,那么下面是打印在like 68上的一行示例:

['6','203-5938855','203','1','BLASCO IBAñEZ','15','30027','30','30500','1','1','1','1970','69.0','0.0','3','1','0','1','27718.0','2018-09-05',',
‘35968.0’、‘2017-01-13’、‘27718.0’、‘2018-09-05’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0.0’、‘0’、‘0’、‘0
联合国阿尔图拉斯凯托大厦、萨隆·科默多尔、科奇纳、联合国巴诺凯托的宿舍生活区https://www.haya.es/vivienda-5938855/', '4', '2017-01-13', '38.060558',
“-1.215763”、“0”、“TAU801688”、“Jennifer de Gea”、“BANKIA”、“G”、“0.0”、“1”、“0.0”、“2018-12-28 16:32:59”、“2018-12-28 16:32:59”、“http://www.outletdeviviendas.com/estaticos/imagen.asp?f=685327_203-5938855_1.jpg&c=144']

您需要提供与查询中使用的相同数量的参数来执行:

例如

cur.execute("INSERT INTO inmuebles_test (id, referencia) VALUES ( %s, %s )",row)
此外,参数应为元组或字典(非列表),如下所述:

此方法执行给定的数据库操作(查询或命令)。 元组或字典参数中的参数绑定到 操作中的变量


来源:

请注意,在这里引用您发布代码的行号并不十分有用(除非是“第三行”或“倒数第二行”)。感谢您的回复。以下内容现在起作用了:cur.execute(“插入到inmuebles_测试(id,地址)值(%s,%s)”,(“你好”,“你好”))但是,这不起作用:cur.execute(“插入到inmuebles_测试(id,地址)值(%s,%s)”,(行[0],行[1])打印(行)起作用,但打印(行[0])不起作用……我认为
不是一个列表,这就是
行[0]的原因
不起作用,需要您的帮助。问题是csv文件在行之间包含空格。
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))