Python Don';我不明白这一点;SQL语句的参数不足;错误
上面的代码导出到csv文件,然后尝试将其导入到不同服务器上的相同表中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"
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))