Skip to main content
 首页 » 编程设计

python之PyDev 和 Django : PyDev breaking Django shell

2024年09月03日32sharpest

我建立了一个新项目,并用简单的模型填充了它。 (基本上我在关注 tut 。)

当我在命令行上运行 python manage.py shell 时,它工作正常:

>python manage.py shell 
 
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on 
win32 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from mysite.myapp.models import School 
>>> School.objects.all() 
[] 

效果很好。然后,我尝试在 Eclipse 中做同样的事情(使用由相同文件组成的 Django 项目。)

Right click on mysite project >> Django >> Shell with Django environment

这是 PyDev 控制台的输出:

>>> import sys; print('%s %s' % (sys.executable or sys.platform, sys.version)) 
C:\Python26\python.exe 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] 
>>>  
>>> from django.core import management;import mysite.settings as settings;management.setup_environ(settings) 
'path\\to\\mysite' 
>>> from mysite.myapp.models import School 
>>> School.objects.all() 
Traceback (most recent call last): 
  File "<console>", line 1, in <module> 
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 68, in __repr__ 
    data = list(self[:REPR_OUTPUT_SIZE + 1]) 
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 83, in __len__ 
    self._result_cache.extend(list(self._iter)) 
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 238, in iterator 
    for row in self.query.results_iter(): 
  File "C:\Python26\lib\site-packages\django\db\models\sql\query.py", line 287, in results_iter 
    for rows in self.execute_sql(MULTI): 
  File "C:\Python26\lib\site-packages\django\db\models\sql\query.py", line 2368, in execute_sql 
    cursor = self.connection.cursor() 
  File "C:\Python26\lib\site-packages\django\db\backends\__init__.py", line 81, in cursor 
    cursor = self._cursor() 
  File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line 170, in _cursor 
    self.connection = Database.connect(**kwargs) 
OperationalError: unable to open database file 

我在这里做错了什么?

请您参考如下方法:

错误是关于没有打开数据库文件。所以我猜你的 settings.py 中的数据库路径是一个相对路径,PyDev 启动 shell 的当前目录与你通常使用的不同。

如果是这种情况,请将 DATABASE_NAME 设置更改为绝对路径,它应该可以工作。