我试了几次,但我无法解决错误。 我的python代码如下所示:
def validate(item,key):
if key in item:
if isinstance( item[key], ( int, long, float) ):
stro=str(item[key])
if stro.lower()=="true":
return "1"
if stro.lower()=="false":
return "0"
return str(item[key])
stro= item[key].encode('ascii', 'replace')
return stro.replace("'","''")
else:
return "null"
for sport in oddsjson:
pv_id = validate(sport.get("id"))
pv_name= validate(sport,get("name"))
sql= "INSERT INTO odds_sports(pv_id,pv_name) VALUES ('"
sql= sql+ pv_id + "','"
sql= sql+ pv_name + "')"
cursor.execute(sql)
conn.commit()
发送此错误
pv_id = validate(sport.get("id"))
TypeError: validate() takes exactly 2 arguments (1 given)
答案 0 :(得分:1)
此错误非常简单。
def validate(item, key)
validate
需要2个参数:item
和key
。
但是,您只提供一个:
pv_id = validate(sport.get("id"))
奖励积分:
下一行有拼写错误:
pv_name = validate(sport,get("name"))
# ^ comma
应该是
pv_name = validate(sport.get("name"))
# ^ dot
您的代码容易受到SQL注入攻击。使用参数化查询而不是连接查询。
sql = "INSERT INTO odds_sports(pv_id, pv_name) VALUES (?, ?)" # or %s, depending on
# the library/connector
# you are using
cursor.execute(sql, (pv_id, pv_name))