Django Python中while循环内的原始更新查询

时间:2017-03-30 05:59:33

标签: python django python-2.7 web

好的我是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

的方式

谢谢和问候

1 个答案:

答案 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"