为什么Django sqlite db文件被Python脚本消灭了?

时间:2013-10-06 07:11:23

标签: python django sqlite

我已经在这个问题上看了很多问题,并没有为我的具体案例找到解决方案。我目前面临的问题是当我尝试save()从Python脚本插入新行时,我的sqlite db文件正在被删除。但是,当从我的一个Django应用程序中使用相同的步骤时,这不会发生。

为了使用我的Django模型使用下面没有提到的外部Python脚本,我需要一些额外的设置吗?

在Python脚本中,我已将以下内容添加到文件顶部:

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

我还仔细检查过以下项目:

  1. 我的设置模块具有db的NAME的绝对路径。
  2. 当我运行DB文件并运行python manage.py syncdb时,表I 欲望被创造;此后,DB文件大小约为50k 初始化。
  3. 这是我看到的行为:

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

    是否有任何我在能够使用另一个Python脚本的Django模型时缺少的东西?我正在使用这个脚本作为一些手动更新的工具,并且非常希望它能够正常运行。

    以下是我的设置的快速示例:

    目录:

    myproject/
    myproject/myapp/
    myproject/tools/
    

    Django模型驻留在myproject / myapp /中,脚本位于myproject / tools /中。 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 个答案:

答案 0 :(得分:-1)

你的设置不够详细,但听起来有更好的方法。

Django已经为您管理数据库连接,因此无需解决实际的sqlite文件。只需使用“python manage.py my_script”在django会话中运行您的脚本。以下是执行此操作的方法:https://docs.djangoproject.com/en/dev/howto/custom-management-commands/