2015-12-06 41 views
0

我一直想弄清楚如何導出我的數據庫作爲CSV格式的文件以某種格式(做數據轉儲到JSON和轉換爲CSV不會或將採取時間太長)。目前我有一個腳本只是遍歷每個對象並將相關信息寫入文件。但是,對於一些奇怪的原因,Django的抱怨拋出:Django扔錯誤配置錯誤無論我做什麼

Traceback (most recent call last): 
File "csv_export.py", line 4, in <module> 
from models import Patient, Nurse, Doctor, HospitalAdmin 
File "/home/ian/Documents/swen261/master_project/HealthNet/main_site/models.py", line 2, in <module> 
from django.contrib.auth.models import User 
    File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py", line 7, in <module> 
from django.middleware.csrf import rotate_token 
    File "/usr/local/lib/python2.7/dist-packages/django/middleware/csrf.py", line 14, in <module> 
from django.utils.cache import patch_vary_headers 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/cache.py", line 26, in <module> 
from django.core.cache import caches 
    File "/usr/local/lib/python2.7/dist-packages/django/core/cache/__init__.py", line 34, in <module> 
if DEFAULT_CACHE_ALIAS not in settings.CACHES: 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__ 
self._setup(name) 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup 
% (desc, ENVIRONMENT_VARIABLE)) 
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 

下面是腳本:

# exports db as a csv file 

import sys, os, django 
sys.path.append('~/Documents/swen261/masterProject/HealthNet/main_site/') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'main_site.settings' 
django.setup() 
from models import Patient, Nurse, Doctor, HospitalAdmin 

print("Starting DB export script...\n") 

print("Creating csv file 'csv_output.csv'...\n") 
with open('csv_output.csv', 'w+') as file: 
    print("Writing out Patients...\n") 
# formatting got a little screwed here, the rest below this should be indented. 
for p in Patient.objects.all(): 
    file.write("%s,%s,%s,%s,%s,%s,%s,%s,%s,\n" 
       % ("Patient", p.user.username, p.user.password, p.user.first_name, p.user.last_name, p.hospital.name, p.insurance_provider, p.insurance_id, "nil")) 
print("Writing out Doctors...\n") 
for d in Doctor.objects.all(): 
    file.write("%s,%s,%s,%s,%s,%s,%s,%s,%s,\n" 
       % ("Doctor", d.user.username, d.user.password, d.user.first_name, d.user.last_name, d.hospital.name, "nil","nil","nil")) 
print("Writing out Nurses...\n") 
for n in Nurse.objects.all(): 
    file.write("%s,%s,%s,%s,%s,%s,%s,%s,%s,\n" 
       % ("Nurse", n.user.username, n.user.password, n.user.first_name, n.user.last_name, n.hospital.name, "nil", "nil", "nil")) 
print("Writing out Hospital Admins...\n") 
for ha in HospitalAdmin.objects.all(): 
    file.write("%s,%s,%s,%s,%s,%s,%s,%s,%s,\n" 
       % ("HospitalAdmin", ha.user.username, ha.user.password, ha.user.first_name, ha.user.last_name, ha.hospital.name, "nil", "nil", "nil")) 

print("Finished creating csv.\n") 

The directory structure. And the template thing is a bug with pycharm.

我不知道它爲什麼這樣做或如何解決它。問題似乎在進口,儘管我可以合法地在視圖文件中執行此操作。所有其他問題相同的人似乎都以不同的方式得到了答案,而且我根據他們的答案還沒有弄清楚。

+0

buehler?我試着改變了一些東西,它仍然會在整個地方拋出錯誤的配置錯誤。 – Ian

回答

0

在您的模塊的頂部添加這個(調整路徑右一爲您的項目,以及「設置」)

import sys, os 
sys.path.append('/path/to/your/django/app') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
from django.conf import settings 
django.setup() 
+0

我試過了,沒有改變。顯然它只是'從模型導入'的線......'你有任何其他建議嗎? – Ian

+0

您需要調用'django.setup()'以及以上。 – Alasdair

+0

@Ian我更新了代碼,你可以試試看嗎? –

0

更改此:

import sys, os, django 
sys.path.append('~/Documents/swen261/masterProject/HealthNet/main_site/') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'main_site.settings' 

這樣:

import sys, os 
sys.path.append(os.path.expanduser('~/Documents/swen261/masterProject/HealthNet'))) 
os.environ['DJANGO_SETTINGS_MODULE'] = 'HealthNet.settings' 
import django 

DJANGO_SETTINGS_MODULE的環境變量需要有一個導入的路徑。這應該在導入django之前完成。

+0

因此,將錯誤更改爲此.... Traceback(最近調用最後一次): 文件「csv_export.py」,第10行,在 從模型導入Patient,Nurse,Doctor,HospitalAdmin,醫院 .... django.core.exceptions.ImproperlyConfigured:無法檢測模型「Hospital」的應用標籤。確保其模塊「模型」位於已安裝的應用程序中。 – Ian

+0

你可以用你的應用程序的目錄結構來更新你的問題嗎? – thebjorn

+0

添加了@thebjorn – Ian