我是python的新手,但这是一个如此简单的问题(我知道它应该有效),这有点令人沮丧。
我有这个代码,当项目不为空时应该将数据插入mysql db。但由于某种原因,python仅在其上面的if语句也计算为true时才计算特定的if语句。
def process_item(self, item, spider):
now = datetime.datetime.now()
self.cursor.execute(""" INSERT INTO `diseases`(`medical_term`, `local_term`, `date_added`, `from_getbetter`) VALUES (%s,%s,%s,%s)""", (item['title'][0].encode('utf-8'), item['desc'][0].encode('utf-8'), now.strftime('%Y-%m-%d %H:%M:%S'), 0))
disease_id = self.cursor.lastrowid
if item['head']:
self.cursor.execute(""" INSERT INTO `disease_locations`(`disease_id`, `location`) VALUES (%s,%s)""", (disease_id, item['head'][0].encode('utf-8')))
if item['neck']:
self.cursor.execute(""" INSERT INTO `disease_locations`(`disease_id`, `location`) VALUES (%s,%s)""", (disease_id, item['neck'][0].encode('utf-8')))
if item['nose']:
self.cursor.execute(""" INSERT INTO `disease_locations`(`disease_id`, `location`) VALUES (%s,%s)""", (disease_id, item['nose'][0].encode('utf-8')))
if item['mouth']:
self.cursor.execute(""" INSERT INTO `disease_locations`(`disease_id`, `location`) VALUES (%s,%s)""", (disease_id, item['mouth'][0].encode('utf-8')))
例如,item ['nose']只会在项目head和neck不为null时插入。 Database screenshot
请帮助:(
答案 0 :(得分:-1)
嗨,我认为item是一个dict,如果item没有这样的键,那么你的脚本会出现错误' head'。您的所有if语句都应写成如下:
if 'head' in item: