scrapy 保存数据到mysql: Insert error: (1054, "Unkonw column '*' in 'field list' " )

在使用scrapy 爬取汽车评论时,insert语句执行老是出错

1. 保存长文本:mysql 保存长文本需使用text类型

create_command = 'create table evComm3(car_name varchar(20), advant text, disadvant text, sums text, support_num int(8))'
cursor.execute(create_command)

注:mysql中保存字符串的类型如下

CHAR(n) 固定长度,最多 255 个字符 
VARCHAR(n) 可变长度,MySQL 4.1 及以前最大 255 字符,MySQL 5 之后最大 65535 字节 
TINYTEXT 可变长度,最多 255 个字符 
TEXT 可变长度,最多 65535 个字符 
MEDIUMTEXT 可变长度,最多 16777215(2^24 - 1)个字符 

LONGTEXT 可变长度,最多 4294967295(2^32 - 1)(4G)个字符 


2.  保存文本时,一直出现错误 Insert error: (1054, "Unkonw column '*' in 'field list' " )

insert_sql = "insert into evComm2(car_name,advant,disadvant,sums,support_num) values({0},{1},{2},{3},{4})".\
		format(item['car_name'],item['advantage'],item['disadvantage'],item['sums'], int(item['support_num']))
cursor.execute(insert_sql)


经分析原因是python中sql语句的语法规定必须有引号将字符串值包起来

(1)解决方法一:直接用引号将{}包起来

insert_sql = "insert into evComm2(car_name,advant,disadvant,sums,support_num) values('{0}','{1}','{2}','{3}','{4}')".\
		format(item['car_name'],item['advantage'],item['disadvantage'],item['sums'], int(item['support_num']))
cursor.execute(insert_sql)
 (2) 解决方法二:使用repr()函数处理format中的字符串数据
insert_sql = "insert into evComm2(car_name,advant,disadvant,sums,support_num) values({0},{1},{2},{3},{4})".\
		format(repr(item['car_name']),repr(item['advantage']),repr(item['disadvantage']),\
		repr(item['sums']), int(item['support_num']))
cursor.execute(insert_sql)
事实上repr()和``做一样的事情



扫描二维码关注公众号,回复: 1919908 查看本文章






猜你喜欢

转载自blog.csdn.net/zhuzuwei/article/details/80932461
今日推荐