我已经浏览了很多关于这个问题的问题,但还没有找到适合我的特殊情况的解决方案。我目前面临的问题是,当我尝试 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
我还仔细检查了以下项目:
- 我的设置模块具有数据库名称的绝对路径。
- 当我 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()