pymysql插入数据到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()和``做一样的事情








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值