老师,我感觉您的课程讲解有个问题

来源:6-20 保存数据到mysql中 -2

战战的坚果

2019-06-09

图片描述

如图所示,您建的知乎问题的表,其中crawl_time您设置为datetime类型,但是在5-20小节的3.13分时,您明确的说,在执行sql语句时,插入time时,需要给它传递一个字符串???,所以,您的代码如下:
crawl_time = datetime.datetime.now().strftime(SQL_DATETIME_FORMAT)
您为什么说一定要把它转换为字符串才能添加进数据库呢???
而您在爬取伯乐在线时,将create_time字段设置为datetime类型,您做的处理是: create_date = scrapy.Field(
input_processor=MapCompose(date_convert),
)

def date_convert(value):
try:
create_date = datetime.datetime.strptime(value, “%Y/%m/%d”).date()
except Exception as e:
create_date = datetime.datetime.now().date()
return create_date
如上,您在想方设法将其从字符串变为日期类型。
所以,针对上面两个日期的不同处理,我不理解!

写回答

1回答

bobby

2019-06-11

  1. 因为sql语句中你没法传入一个datetime类型进去, sql语句只能是字符串,所以插入时间需要转换成时间的格式,

  2. 伯乐在线因为页面上只能提取到日期,没法提取到时分秒, 所以只能转换为日期,一般情况下将一个date类型的字符串插入到datetime类型的字段上,mysql会自动给时分秒全部变成0 不会报错

1
0

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5796 学习 · 6290 问题

查看课程