我正在尝试从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,"不正确的整数值:''对于专栏' Likes_Count'在第1行"
我不知道为什么我收到错误,因为我知道我要插入的值不是整数,而是字符串。任何帮助,将不胜感激。
修改 我的完整代码在这里:
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()
答案 0 :(得分:1)
你必须转义单引号字符,否则查询会混淆什么是字符串,什么不是。
这不会起作用:
Select * from test where name = 'O'Connor'
但这会奏效:
Select * from test where name = 'O\'Connor'
看看mysqli.real-escape-string哪个会为你完成这项工作。