2014-10-22 6 views
1

완전히 다른 Django 프로젝트에서 실행되는 2 개의 데이터베이스가 있습니다. 한 프로젝트에는 데이터를 분석하고 그 결과를 CSV로 출력하는 스크립트가 있습니다. 다른 프로젝트에는 해당 CSV를 가져 와서 결과를 데이터베이스에 입력하는 스크립트가 있습니다.별도의 Django 프로젝트의 스크립트에서 다른 Django 프로젝트의 데이터베이스 스크립트를 실행하십시오.

내가 원하는 것은 분석 스크립트를 실행하고 CSV를 출력 할 때 두 번째 프로젝트의 데이터베이스 스크립트를 호출하고 데이터베이스에 새 CSV 데이터를 가져 오는 과정을 자동화하는 것입니다.

이제 분명한 것은 할 일이지만, 장고 프로젝트이기 때문에 많은 문제가 발생합니다. 주로 설정 파일이 누락되어 데이터베이스 가져 오기 오류가 발생합니다.

subprocess.call("cd {0}\n python database2_import.py".format(project2_dir), shell=True) 

을하지만 또한 일을하지 않았으며 강하게에 추천 :

나는과 같이 하위 프로세스로 실행했습니다. project2 스크립트를 실행하려고하기 때문에 혼란스러운 projects1 설정을 가져올 수 없다는 오류가 나타납니다.

ImportError: Could not import settings 'project1.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named project1.settings 

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

기본적으로 project's_1 스크립트에서 "python database2_import.py"와 동일한 기능을 실행하고 싶습니다.

답변

0

하위 프로세스 방법을 작동 시키려면 적절한 환경을 지정해야한다는 것을 알게되었습니다. 하위 프로세스는 project1의 스크립트에서 실행되므로 project2의 스크립트를 실행하려고해도 여전히 프로젝트 1의 환경을 사용하고 있습니다.

하위 프로세스에 대한 인수로 적절한 환경을 지정하기 만하면됩니다.

import subprocess 
my_env = os.environ 
my_env["DJANGO_SETTINGS_MODULE"] = "Project2.settings" 
command = "cd {0}\n python python database2_import.py".format(project2_dir) 
result = subprocess.Popen(command, shell=True, env=my_env) 

말했다되는 것을 나는 아직도 오히려 모든 서브 프로세스 방법을 사용하지 것이다, 그래서 나는 대답으로이를 표시하기 전에에서 개최됩니다.

관련 문제