2013-07-31 19 views
1

所以我正在與Django握手,或試圖。我有一些不依賴於被網頁調用的代碼 - 它的目的是用信息填充數據庫。最終它將成爲一夜之間運行的cron工作。這是它的第一個破解,這是做一個初始的人口(一旦我有這個工作,我會轉移到一個添加結構,只有新的記錄被推送。)我使用Python 2.7,Django 1.5和Sqlite3 。當我運行這段代碼,我得到導入CSV到Django和設置不被識別

Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

這似乎是相當明顯的,但我已經花了幾個小時,現在試圖找出如何調整該設置。我如何打電話/打開連接/無論正確的術語在這裏?我有很多像這樣的功能,這將是預定的工作,這讓我整個下午都感到沮喪。

import urllib2 
import csv 
import requests 

from django.db import models 
from gmbl.models import Match 

master_data_file = urllib2.urlopen("http://www.football-data.co.uk/mmz4281/1213/E0.csv", "GET") 
data = list(tuple(rec) for rec in csv.reader(master_data_file, delimiter=',')) 

for row in data: 
    current_match = Match(matchdate=row[1], 
     hometeam=row[2], 
     awayteam = row [3], 
     homegoals = row [4], 
     awaygoals = row[5], 
     homeshots = row[10], 
     awayshots = row[11], 
     homeshotsontarget = row[12], 
     awayshotsontarget = row[13], 
     homecorners = row[16], 
     awaycorners = row[17]) 
    current_match.save() 

本來我開始了與http://django-csv-importer.readthedocs.org/en/latest/,但我有同樣的錯誤,文件並沒有太大的意義試圖調試。當我嘗試調用函數中的settings.configure時,它說它不存在;據推測我不得不導入它,但無法做到這一點。

+0

您需要導入您的設置並做一些額外的設置,或者將導入定義爲自定義'manage.py'命令。 http://stackoverflow.com/questions/3226405/scripting-django有一個很好的答案,顯示完整的導入和設置。 –

回答

1

確保Django的,和你的項目是在PYTHONPATH,那麼你可以這樣做:

import urllib2 
import csv 
import requests 
from django.core.management import setup_environ 
from django.db import models 
from yoursite import settings 

setup_environ(settings) 

from gmbl.models import Match 

master_data_file = urllib2.urlopen("http://www.football-data.co.uk/mmz4281/1213/E0.csv", "GET") 
data = list(tuple(rec) for rec in csv.reader(master_data_file, delimiter=',')) 

# ... your code ... 

參考:http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

希望它能幫助!

+0

這確實有點幫助 - 但我已經將項目添加到sys路徑幾次了,它似乎並沒有保存/保留它。所以我在終端中輸入'sys','sys.path'來檢查路徑上的內容,然後追加路徑 - 但它似乎失去了它,所以我猜想我需要在設置文件中編輯它 - 愚蠢問題,但哪一個? MUH。 (這並沒有得到這個事實的幫助,因爲我在機器上有兩個版本的Django,都是1.5(正常安裝和Django的BitnamiStack),這使添加正確的文件夾變得複雜。 – Withnail