2014-07-04 2 views
0

cursor.execute에서 문제가 발생하여 프로그램에서 완전히 분리되어 같은 문제가 발생했습니다. 커서 반환 값은 "django.db.backends.util.CursorDebugWrapper object"입니다. 내보기에 내 코드는 다음과 같습니다 다른 평 파일에서 Django Cursor.Execute Issue with Postgresql

나는이 :

region_id=connections['default'].cursor() 
region_id.execute("SELECT id FROM \"pecasRunLog_modelinstance\" where model_region='{0}'".format(region)) 

run_id=connections['default'].cursor() 
run_id.execute("SELECT id FROM \"pecasRunLog_runinstance\" where run_name='{0}'".format(schema+timestamp)) 

이러한 호출은 다음 코드 조각에 사용됩니다

url_login='/pecasRunLog/accounts/login/' 
url_add_run='/pecasRunLog/model/'+region+'/add_run/' 
url_add_comment='/pecasRunLog/model/'+region+'/'+schema+timestamp+'/add_comment/' 

client = requests.session() 
client.get(url_login) 
csrftoken = client.cookies['csrftoken'] 
login_data = {'username':user,'password':password, 'csrfmiddlewaretoken':csrftoken, 'next': '/pecasRunLog/'} 
r1=client.post(url_login,data=login_data) 

run_data={'model_region':region_id,'scendir':scendir, 'mapit_scenario': schema, 'run_name':schema+timestamp, 'run_computer_name':os.environ['COMPUTERNAME'], 'run_computer_ip':get_lan_ip(), 'declared_user':declared_user, 'logged_in_user':getpass.getuser(), 'sd_schema':schema, 'sd_database':database, 'sd_host':get_lan_ip(), 'sd_port':pgport,'mapit_schema':schema, 'mapit_database':database, 'mapit_host':get_lan_ip(), 'mapit_port':pgport,'start_date':start_date, 'start_time':start_time, 'end_date':end_date, 'end_time':end_time,'logged_manually':3} 
r2=client.post(url_add_run,data=run_data) 

comment_data={'model_region':region_id, 'run_name':run_id, 'comment':run_comment} 
r3=client.post(url_add_comment,data=comment_data) 

이의 목적 코드는 로그인 데이터를 얻은 다음 python 스크립트에서 모델 실행 데이터와 주석을 게시하는 것입니다. 스크립트는 주석없이 올바르게 작동합니다 (위의 r3). Django 모델 사이의 외래 키이기 때문에 "region_id"와 "run_id"가 필요합니다.

+0

커서 (model_id, run_id, region_id)를 어떻게 선언합니까? – khampson

+0

내 질문의 두 번째 부분을 추가 코드로 업데이트했습니다. 첫 번째 섹션 (for model_id)은 커서 호출이 두 번 연속된다는 점에서 비슷합니다. –

답변

0

내 실수가 수정되었습니다. 커서가 첫 번째 호출에만 적용되고 소비되었습니다. 나는 커서 호출에 의해 출력 된 값으로 변수를 생성하기 위해 그것을 바꿨다. 이는 커서 기능의 기능에 대한 이해가 부족한 문제였습니다.