Python忽略其他if语句

时间:2016-03-21 06:50:49

标签: python

我是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

请帮助:(

1 个答案:

答案 0 :(得分:-1)

嗨,我认为item是一个dict,如果item没有这样的键,那么你的脚本会出现错误' head'。您的所有if语句都应写成如下:

if 'head' in item: