Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么INSERT INTO与';操作数应包含1列&x27;?_Python_Sql_Pymysql - Fatal编程技术网

Python 为什么INSERT INTO与';操作数应包含1列&x27;?

Python 为什么INSERT INTO与';操作数应包含1列&x27;?,python,sql,pymysql,Python,Sql,Pymysql,我知道对于同一个错误有很多问题,我已经检查过了。其中大多数都与某人误用SELECT语句有关,我找不到与我类似的问题 conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='password', db='nhl') cur =

我知道对于同一个错误有很多问题,我已经检查过了。其中大多数都与某人误用
SELECT
语句有关,我找不到与我类似的问题

conn = pymysql.connect(host='localhost',
                       port=3306,
                       user='root', 
                       passwd='password',
                       db='nhl')
cur = conn.cursor()

#some code...

player = td.string.strip()
player = player.split(' (')
tID = teamList.index(team)
cur.execute("INSERT INTO players (Name,G,A,P,PlusMinus,PIM,S,H,BKS,GVA,TKA,TeamID) 
             VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
            (player, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, tID))
pymysql.err.InternalError:(1241,'操作数应包含1列)

我真的不确定我会错在哪里。所有数据库列都是
INT
,除了
Name
VARCHAR
。这是在Python3.4中使用pymysql编写的

player = player.split(' (')
在这一行之后,
player
是一个字符串列表(而不是字符串),因此
cur.execute
不允许您将其作为
Name
列的值插入

查找这些bug的一种简单方法是尝试用文本替换值,如:

cur.execute("INSERT INTO players (Name,G,A,P,PlusMinus,PIM,S,H,BKS,GVA,TKA,TeamID) 
                   VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                          ("playerName", 0,0,0,0,0,0,0,0,0,0, 123))

这是可行的,你应该知道在别处寻找错误。请参阅:

我假设在
TeamID)之后的代码中没有换行符,而您只是为了可读性才在此处添加它?是的,整个execute语句都在一行上,这是您从未注意到的简单错误!Cheers@Kos如果你写下来作为答复,我会接受的