好的我是python特别是django的新手,所以请对我很轻松。
我只想遍历每行的结果集,然后在while循环中使用其值进行更新查询。到目前为止我有这个代码。
def orprocesspost(request, pk):
cursor = connection.cursor()
#this query returns 2 rows
cursor.execute('select ord_recno, orm_recno, account_code, debit, credit, created_by, posted, remarks, origin, sort_order from or_details where orm_recno=%s', [pk])
row = cursor.fetchone()
while row is not None:
cursor.execute('update general_ledger set dr_bal = dr_bal + %s, cr_bal = cr_bal + %s where gl_code = %s',[row[3],row[4],row[2]])
row = cursor.fetchone()
如果我删除此行cursor.execute('update general_ledger set dr_bal = dr_bal + %s, cr_bal = cr_bal + %s where gl_code = %s',[row[3],row[4],row[2]])
循环执行正常,我可以看到第二行正在读取
但是当我尝试使用更新查询时,它只会更新1行...我不知道这里发生了什么。我一直在寻找解决方案......
顺便说一下我按照本教程Fetching row by row from MySQL in Python
的方式谢谢和问候
答案 0 :(得分:1)
您可以尝试使用Django ORM查询数据库。 它很容易理解。
def orprocesspost(request, pk):
try:
obj = or_details.objects.filter(orm_recno=pk)
for i in obj:
new_obj = general_ledger.objects.get(gl_code=i.xyz)
#xyz : name of your model field.
newobj.dr_bal = newobj.dr_bal + <new value>
newobj.cr_bal = newobj.cr_bal + <new value>
newobj.save()
exept or_details.DoesNotExist:
print "object does not exist"