似乎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',
}
答案 0 :(得分:0)
在我解决问题之后,我会回答我的问题,因为这是一整天带给我的琐碎问题。也许它对某人有用。
将数据库的NAME
更改为sqlite3数据库的绝对路径后,Scrapy成功存储了数据。因此Scrapy需要sqlite3数据库的绝对路径,并且将名称更改为db的绝对路径不会影响Django功能。