1

だから私はDjangoを理解しようとしている、またはしようとしています。Web ページから呼び出されることに依存しないコードがいくつかあります。これは、データベースに情報を入力するように設計されています。最終的には、夜間に実行する cron ジョブとして設定されます。これは、最初の作成を行うための最初のクラックです (これが機能したら、新しいレコードのみがプッシュされる add 構造に移動します)。私は Python 2.7、Django 1.5、および Sqlite3 を使用しています。 . このコードを実行すると、

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 を呼び出そうとすると、存在しないと言われました。おそらくインポートする必要がありましたが、それを機能させることができませんでした。

4

1 に答える 1

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/

それが役に立てば幸い!

于 2013-07-31T21:33:06.050 に答える