2017-06-15 1 views
1

私はこのフィールドで新しく、現在はcronを使用して毎時sqliteデータベース(django用)を更新するpythonスクリプトを取得しようとしています。ここ は、スクリプトCronスクリプトはうまく動作しますが、Djangoデータベースを更新しません

import requests, sys, os, django, csv 

sys.path.append("\var[...]\django") 
os.environ["DJANGO_SETTINGS_MODULE"] = "s.settings" 
django.setup() 

from health.models import s_model 
import datetime 
import logging 

#################### initialising log file 

today = datetime.datetime.now() 
logging.basicConfig(filename="/var/[...]/processing.log", level=logging.INFO) 
logging.info("\nScript run at " + str(today) + "\n") 

################### getting data from csv and saving it to DB 

with open('file.csv', 'rU') as csvfile: 
    try: 
     csvreader = csv.reader(csvfile, delimiter=',', quotechar='"') 
     i=0 
     for row in csvreader: 
      if(i>0): 
       people = {} 
       people['name'] = notNull(row[0].strip()) 
       people['age'] = notNull(row[1].strip()) 
       people = s_model(**people) 
       people.save() 
      i=i+1 
    except Exception: 
     logging.error("Error processing number for id "+ str(row["Id"])) 
     return 

の削減バージョンであり、私は、このファイルは、私がチェックして何cron.hourly

#!/bin/bash 
/var/[...]myfile.py 

に座ってい:

  • 私は上のチェックdjangoページでは、データベースのデータは更新されません。
  • フォルダから手動でmyfile.pyを実行すると、正常に実行され、データベースがただちに更新されます。
  • cronファイルの最後に改行があります。
  • 私はアクセス権をチェックしました(cron.hourlyファイルとmyfile.pyファイルの両方に+ x権限があり、rootが所有しています)
  • ログファイル(スクリプトによって記録されたファイル)スクリプトは1時間ごとに正常に動作し、エラーはないことを伝えます。
  • "sudo service apache2 restart"を試みましたが、ページはまだ更新されていません。

明らかに何も確認されていませんか?どんな助けや方向性も非常に高く評価されます!

ありがとうございます!

+1

は、仮想環境内のアプリですか? – fixmycode

+0

また、django環境の初期化を防ぐために、独自のmanage.pyコマンドを作成することもできます。https://docs.djangoproject.com/en/1.11/howto/custom-management-commands/ – SebCorbin

+0

@fixmycode "pip - V "をdjangoフォルダに入れ、" 9.0.1.1 /usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg(python 2.7) "と言っています仮想環境をチェックする正しい方法? – zibethin

答えて

0

これで問題は解決しました。他の誰かがそれに遭遇した場合に備えて、ここに入れてください。

1)sudo pythonがcronスクリプトのファイルの場所の前にありませんでした。コードが実行され、データベースが更新されます。

#!/bin/bash 
sudo python /var/[...]myfile.py 

2)および第二の問題として、myfile.csv上記csvファイルは、スクリプト内の他のすべてのパス)と一緒に、絶対パス(されているべきです。

関連する問題