我有一个很好的数据库,我在Django中创建,我想通过我的网站之外的一些python脚本接口,所以我很好奇是否可以在Django之外使用Django数据库API网站,如果有的话,有没有人知道如何做到这一点?谷歌并没有因此而受到很多打击.
是否可以在Scrapy管道中访问我的django模型,以便我可以将我的已删除数据直接保存到我的模型中?
我已经看过这个,但我真的不知道怎么设置它?
我有一个Scrapy项目,我试图将输出项目保存为Django模型定义中的对象(我没有使用DjangoItem).
我正在导入这里指定的Django设置.
def setup_django_env(path):
import imp, os
from django.core.management import setup_environ
f, filename, desc = imp.find_module('settings', [path])
project = imp.load_module('settings', f, filename, desc)
setup_environ(project)
setup_django_env(PATH_TO_DJANGO_PROJECT)
Run Code Online (Sandbox Code Playgroud)
在我的Scrapy项目中,我有一个管道类,它处理最后的所有项目并将其保存到DB:
from my_django_project.apps.my_books.models import Book, Category, Image
class DjangoPipeline(object):
def process_item(self, item, spider):
category = Category.objects.get(name='Horror')
book = Book(name='something', category=category)
book.save()
image = Image(name='something', book=book)
image.save()
return item
Run Code Online (Sandbox Code Playgroud)
然而,出现了一些奇怪的事情,对于第一个项目,我得到了一个错误(见下文).对于其他项目,一切都很好.假设我有7个要保存的项目,所以我在第一个中得到一个错误,另外6个得到保存.
Traceback (most recent call last):
File "/users/ale/virtualenvs/books/lib/python2.6/site-packages/scrapy/middleware.py", line 54, in _process_chain
return process_chain(self.methods[methodname], obj, *args)
File "/users/ale/virtualenvs/books/lib/python2.6/site-packages/scrapy/utils/defer.py", line 65, in process_chain
d.callback(input)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/twisted/internet/defer.py", …Run Code Online (Sandbox Code Playgroud)