我是这个领域的新手,我目前正在尝试使用cron每小时更新一个sqlite数据库(用于django)的python脚本。 这是脚本的简化版本
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
我检查了什么:
有什么明显的我没有检查过吗?任何帮助或方向将非常感谢!
谢谢!
答案 0 :(得分:0)
好的,所以问题得到解决。只需将其放在此处以防其他任何人遇到它。
1)在cron脚本中的文件位置前面缺少 sudo python 。现在代码运行并更新数据库。
#!/bin/bash
sudo python /var/[...]myfile.py
2)作为第二个问题, myfile.csv 上面的csv文件应该是一个绝对路径(以及脚本中的所有其他路径)。