繁体   English   中英

为什么Python脚本会删除Django sqlite db文件?

[英]Why is a Django sqlite db file getting wiped out by a Python script?

我已经浏览了很多有关此问题的问题,还没有找到适合我特殊情况的解决方案。 我目前面临的问题是,当我尝试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. 我的设置模块具有数据库名称的绝对路径。
  2. 当我管理数据库文件并运行python manage.py syncdb时,创建了我想要的表; 初始化后,DB文件大小约为50k。

这是我看到的行为:

  • 运行上面的第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()

您没有足够详细的设置,但是听起来有更好的方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM