There is an TypeError: execute() takes at most 3 arguments (6 given) when inserting into mysql table

霸气de小男生 提交于 2019-12-13 04:35:42

问题


I have made a webscraper in python and I am now trying to get it to output the data i have scraped into a mysqldb but I keep getting this error and I don't know how to fix it.this is the error I get

 File "C:/Users/owner/Downloads/Scrape (2).py", line 16, in <module>
    cursor.execute("INSERT INTO london10dayforecast (Day,Condition,High,Low,) VALUES (?,?,?,?)", str(var1),str(var2),str(var3),str(var4))
TypeError: execute() takes at most 3 arguments (6 given)

Process finished with exit code 1

Here is the code:

import requests
import MySQLdb

r = requests.get("http://api.wunderground.com/api/be6eb0a1b404829b/forecast10day/q/UK/London.json")
data = r.json()

for day in data['forecast']['simpleforecast']['forecastday']:
var1= day['date']['weekday'] + ":"
var2= "Conditions: ", day['conditions']
var3= "High: ", day['high']['celsius'] + "'C"
var4= "Low: ", day['low']['celsius'] + "'C", '\n'

db = MySQLdb.connect("127.0.0.1","root","","weathersystem" )
cursor = db.cursor()

cursor.execute("INSERT INTO london10dayforecast (Day,Condition,High,Low,) VALUES (?,?,?,?)", str(var1),str(var2),str(var3),str(var4))
db.commit()
db.close()

``

回答1:


You need to pass the values in as a tuple

cursor.execute("INSERT INTO london10dayforecast (Day,Condition,High,Low) VALUES (%s,%s,%s,%s)", (str(var1),str(var2),str(var3),str(var4)))

or more readably

qstr = "INSERT INTO london10dayforecast (Day,Condition,High,Low) VALUES (%s,%s,%s,%s)"
params = str(var1), str(var2), str(var3), str(var4)
cursor.execute(qstr, params)


来源:https://stackoverflow.com/questions/21518498/there-is-an-typeerror-execute-takes-at-most-3-arguments-6-given-when-insert

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!