0

我已经浏览了很多关于这个问题的问题,但还没有找到适合我的特殊情况的解决方案。我目前面临的问题是,当我尝试 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. 当我 rm 数据库文件并运行 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()
4

1 回答 1

-1

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

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

于 2013-10-06T07:39:46.170 回答