我试图在Python中的MySQL表中输入一些列表中的值。我写了以下内容:

CREATE TABLE IF NOT EXISTS friend_attributes (
    Friend int(11) NOT NULL auto_increment,
    Likes_Count varchar(512) NOT NULL default '',
    ID varchar(512) NOT NULL default '',
    PRIMARY KEY(Friend)) ENGINE=MyISAM DEFAULT CHARSET=utf8;


然后,我尝试添加以下值(我检查了这些值是否存在并且是字符串):

INSERT INTO friend_attributes VALUES(
    NULL,
   '"+friend[16]+"',
   '"+friend[17]+"');


我收到以下错误:
1366,“第1行的列'Likes_Count'的整数值不正确:”

我不知道为什么会收到错误消息,因为我知道我要插入的值不是整数,而是字符串。任何帮助,将不胜感激。

编辑:
我的完整代码在这里:

cur.execute("CREATE TABLE IF NOT EXISTS friend_attributes (
Friend int(11) NOT NULL auto_increment,
UID int(11) NOT NULL,
Name varchar(512) NOT NULL default '',
Sex varchar(512) NOT NULL default '',
First_Name varchar(512) NOT NULL default '',
Middle_Name varchar(512) NOT NULL default '',
Last_Name varchar(512) NOT NULL default '',
Locale varchar(512) NOT NULL default '',
About_Me varchar(512) NOT NULL default '',
Hometown varchar(512) NOT NULL default '',
Birthday varchar(512) NOT NULL default '',
Political varchar(512) NOT NULL default '',
Relationship varchar(512) NOT NULL default '',
Religion varchar(512) NOT NULL default '',
Likes_Count varchar(512) NOT NULL default '',
Friend_Count varchar(512) NOT NULL default '',
Mutual_Friends varchar(512) NOT NULL default '',
Pic_URL varchar(512) NOT NULL default '',
Label varchar(512) NOT NULL default '',
ID varchar(512) NOT NULL default '',
PRIMARY KEY(Friend)) ENGINE=MyISAM DEFAULT CHARSET=utf8;")


接着:

for friend in friends:
    cur.execute("INSERT INTO friend_attributes VALUES(NULL, '"+friend[0]+"',
    '"+friend[1]+"', '"+friend[2]+"', '"+friend[3]+"', '"+friend[4]+"',
    '"+friend[5]+"', '"+friend[6]+"', '"+friend[7]+"', '"+friend[8]+"',
    '"+friend[9]+"', '"+friend[10]+"','"+friend[11]+"', '"+friend[12]+"',
    '"+friend[13]+"', '"+friend[14]+"', '"+friend[15]+"', '"+friend[16]+"',
    '"+friend[17]+"', '"+friend[18]+"');")
conn.commit()

最佳答案

您必须转义单引号字符,否则查询会混淆什么是字符串,什么不是字符串。

这行不通:

Select * from test where name = 'O'Connor'


但这将起作用:

Select * from test where name = 'O\'Connor'


看看mysqli.real-escape-string会为您完成的工作。

关于mysql - 不正确的整数值错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24049932/

10-12 01:31
查看更多