scrapy管道django sqlite3数据库错误保存

时间:2013-11-17 15:36:57

标签: django scrapy

似乎Scrapy无法查看数据库,因为item.save()返回错误。 django.db.utils.DatabaseError: no such table: myapp_myitem Django模型没有问题,因为我可以从Django管理员添加/编辑它而不会出错。

items.py

from scrapy.contrib.djangoitem import DjangoItem
from myapp.models import Myitem

class MyitemItem(DjangoItem):
    django_model = Myitem

pipelines.py

from myapp.models import Myitem
from items.models import License, Category, Special

class MyitemPipeline(object):
    def process_item(self, item, spider):
    item.save()
    return item

settings.py

ITEM_PIPELINES = {
    'scrapyproject.pipelines.MyitemPipeline':1000,
}

import sys
sys.path.append('path_to_project')

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings.local'

my_django_project / settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': 'db/local_db',
    'USER': 'me',

}

1 个答案:

答案 0 :(得分:0)

在我解决问题之后,我会回答我的问题,因为这是一整天带给我的琐碎问题。也许它对某人有用。

将数据库的NAME更改为sqlite3数据库的绝对路径后,Scrapy成功存储了数据。因此Scrapy需要sqlite3数据库的绝对路径,并且将名称更改为db的绝对路径不会影响Django功能。