2013-10-06 33 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

相關問題