2013-10-06 99 views
0

我已经看过这个问题上的很多问题,并没有找到我的具体情况的解决方案。我目前面临的问题是,当我尝试从Python脚本中保存()以插入新行时,我的sqlite数据库文件正在被删除。但是,从我的一个Django应用程序使用相同的步骤时,不会发生这种情况。为什么Django sqlite数据库文件被Python脚本擦除?

是否有一些额外的设置需要使用我的Django模型工作以及下面未提及的外部Python脚本?

在Python脚本我已经添加了以下到文件的顶部:

​​

我也双重检查下列项目:

  1. 我的设置模块有数据库名称的绝对路径。
  2. 当我RM数据库文件,并运行python manage.py syncdb表I 愿望被创建;在此 初始化之后,DB文件大小大约为50k。

这是我看到的行为:

  • 运行第2项以上后,我可以成功地从我的Django应用程序创建我的表中的新行。
  • 运行上面的第2项之后,当从Python脚本使用Django模型时,我收到一个DatabaseError,指出“没有这样的表”。另外,当发生这种情况时,sqlite数据库文件会变为零大小。

有没有什么我能够从另一个Python脚本中使用Django模型?我使用这个脚本作为一些手动更新的工具,并且真的想让它工作。

这是我设置的一个简单的例子:

目录:

myproject/ 
myproject/myapp/ 
myproject/tools/ 

Django的模型所在的myproject/MYAPP /和脚本驻留在的myproject /工具/。 PYTHONPATH包含myproject /。在脚本中,我有以下几点:

import os 
import sys 

sys.path.append(absolute_path_to_myproject) 
os.environ['DJANGO_SETTINGS_MODULE']='settings' 
from django.conf import settings 

import myapp.models 

my_model = myapp.models.my_model(name = 'TestName') 
my_model.save() 
+1

原来,这个问题是由于环境中的其他内容破坏了文件并且与代码无关。 – Hazok

回答

0

你没有足够详细的设置,但它听起来像有一个更好的方式来做到这一点。

Django已经为您管理数据库连接,所以不需要解决实际的sqlite文件。只需使用“python manage.py my_script”在django会话中运行脚本。这是如何做到这一点的:https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

+0

我没有试图直接解决sqlite文件,这就是为什么我要导入上面提到的django设置。我提到的是最终状态的观察,即在到达“没有这样的表”DatabaseError后,sqlite文件已经减小到0。我仍在使用Django,尚未使用管理命令,因此我尝试了这种情况。即使从manage.py调用这个问题,仍然会出现同样的问题。将以我当前的设置为例更新问题。 – Hazok

相关问题