我在Django项目中使用Scrapy。
在我的pipelines.py文件中,我可以毫无问题地从Django导入模型:
from competitions.models import Competition
我可以成功显示竞赛模型的属性列表:
for field_name in Competition._meta.get_all_field_names():
print field_name #>>> OK
然而,Competition.objects
的所有方法,例如Competition.objects.get()
提升django.db.utils.DatabaseError: no such table: competitions_competition"
例如,当我尝试获取实例时,我收到此错误:
uefa_champ_leagues = Competition.objects.get(code='EUR_C1_2013')
我已应用Saving Django model from Scrapy project和Access django models inside of Scrapy的建议,因为导入有效,我怀疑问题来自那里。
有什么想法吗?
答案 0 :(得分:1)
尝试将像python manage.py shell
这样的类似环境组合在一起是一个常见的错误。它是脏的和混乱的,并导致像OP中的问题:似乎Django找不到数据库文件的正确位置,或类似的东西。 (而且你并不孤单,我一开始也犯了这个错误。)
编写与Django站点一起使用的脚本的推荐解决方案是create a custom django-admin command,以便您可以使用python manage.py yourcommand
运行它。它干净,可测试,逻辑属于你的Django项目。