0

編集:結局のところ、移行がこのエラーの原因と関係があるとは思いません。

集計値を選択し、それらの値を使用モデルに割り当てている以下のコードの部分で、アプリケーションを django dev サーバーから apache に移行したため、値が割り当てられていないことがわかりました。

私のデバッグ出力は、これらの値が割り当てられた直後に値が実際にモデル インスタンスに適用されることはなく、後で保存が行われると、モデル インスタンスにゼロが残っていることも反映していることを示しています。

パイソンコード

    cursor.execute("""select CUSTNBR,
                             FROMDATE,
                             sum(DECTHERMS) as DECTHERMS,
                             max(PRICE) as PRICE,
                             sum(SALESDLRS) as SALESDLRS,
                             sum(MCFS) as MCFS
                    from LQPPNATGAS
                    where CUSTNBR = ? and 
                          FROMDATE <> '20000000' 
                    group by CUSTNBR, FROMDATE """,str(cust_number))


    row = cursor.fetchone()
    while row:
        if str(row.FROMDATE)[0:4] >= str(oldest_year): 

            b = Usage.objects.filter(user_id=user_id,from_date=row.FROMDATE)

            b[0].decatherms = row.DECTHERMS
            b[0].price = row.PRICE
            b[0].sales_dollars = row.SALESDLRS
            b[0].mcf = row.MCFS
            b[0].save(update_fields=['decatherms','price','sales_dollars','mcf'])

            print >> sys.stderr ,str(b[0].sales_dollars)+"="+str(row.SALESDLRS)


        row = cursor.fetchone()

error.log に出力

[Thu Aug 29 07:47:15 2013] [error] 0.00=168.22
[Thu Aug 29 07:47:15 2013] [error] 0.00=16.78
[Thu Aug 29 07:47:15 2013] [error] 0.00=1107.88
[Thu Aug 29 07:47:15 2013] [error] 0.00=676.85
[Thu Aug 29 07:47:15 2013] [error] 0.00=28.38
[Thu Aug 29 07:47:15 2013] [error] 0.00=876.94
[Thu Aug 29 07:47:15 2013] [error] 0.00=833.21
[Thu Aug 29 07:47:15 2013] [error] 0.00=26.33
[Thu Aug 29 07:47:15 2013] [error] 0.00=130.85
[Thu Aug 29 07:47:15 2013] [error] 0.00=1058.53
4

1 に答える 1

0

リストの [0] 要素を別の変数 b に割り当ててから、操作を行っているときに [0] を指定するのではなく、その変数で操作を実行することで問題を修正しました。

改訂された python コード

   cursor.execute("""select CUSTNBR,
                             FROMDATE,
                             sum(DECTHERMS) as DECTHERMS,
                             max(PRICE) as PRICE,
                             sum(SALESDLRS) as SALESDLRS,
                             sum(MCFS) as MCFS
                    from LQPPNATGAS
                    where CUSTNBR = ? and 
                          FROMDATE <> '20000000' 
                    group by CUSTNBR, FROMDATE """,str(cust_number))


    row = cursor.fetchone()
    while row:
        if str(row.FROMDATE)[0:4] >= str(oldest_year):

            b = Usage.objects.filter(user_id=user_id,from_date=row.FROMDATE)[0]

            print >> sys.stderr , "before b.decatherms="+str(b.decatherms)

            b.decatherms = row.DECTHERMS
            b.price = row.PRICE
            b.sales_dollars = row.SALESDLRS
            b.mcf = row.MCFS
            b.save() #(update_fields=['decatherms','price','sales_dollars','mcf'])

            print >> sys.stderr , "after b.decatherms="+str(b.decatherms)

        row = cursor.fetchone()

error.log に出力

[Fri Aug 30 10:37:28 2013] [error] before b.decatherms=0.0
[Fri Aug 30 10:37:28 2013] [error] after b.decatherms=44.9
[Fri Aug 30 10:37:28 2013] [error] before b.decatherms=0.0
[Fri Aug 30 10:37:28 2013] [error] after b.decatherms=91.1
[Fri Aug 30 10:37:28 2013] [error] before b.decatherms=0.0
[Fri Aug 30 10:37:28 2013] [error] after b.decatherms=3.8
[Fri Aug 30 10:37:28 2013] [error] before b.decatherms=0.0
[Fri Aug 30 10:37:28 2013] [error] after b.decatherms=2.9
[Fri Aug 30 10:37:28 2013] [error] before b.decatherms=0.0
[Fri Aug 30 10:37:28 2013] [error] after b.decatherms=11.8
于 2013-08-30T14:43:15.730 に答える