2014-07-04 66 views
0

我遇到了一个问题与cursor.execute,移动到我的程序完全分开的部分,并遇到同样的问题。我得到一个游标返回值是:“django.db.backends.util.CursorDebugWrapper object”。我在我看来代码:Django Cursor.Execute问题与Postgresql

在另一个.py文件我有:

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)。我需要“region_id”和“run_id”,因为它们是Django模型之间的外键。

+0

你如何声明游标(model_id,run_id,region_id)? – khampson

+0

我用更多的代码更新了我的问题的第二部分。第一部分(对于model_id)类似,它有两个连续的游标调用。 –

回答

0

我修正了我自己的错误。游标仅被应用于第一次调用,然后被消耗。我将它切换到创建一个带有游标调用输出值的变量。这是对游标函数功能缺乏理解的问题。