我知道有关于同一错误的几十个问题,我已经检查了所有这些错误。他们中的大多数都与滥用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, 'Operand should contain 1 column(s)')
我真的不确定自己哪里出错了。除INT
Name
之外,所有数据库列均为VARCHAR
。这是使用pymysql在Python 3.4中编码的。
答案 0 :(得分:2)
player = player.split(' (')
在此行之后,player
是字符串列表(而不是字符串),因此cur.execute
不允许您将其作为Name
列的值进行插值
找到这些错误的一种简单方法是尝试用文字替换值,例如:
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))
哪个会起作用,你知道在其他地方寻找错误。请参阅:How to debug by splitting the problem space.