python - 为查询集的下标元素赋值不起作用

标签 python mysql django apache

编辑:事实证明,我不相信迁移与导致此错误有任何关系。

在下面的代码部分中,我选择聚合值并将这些值分配回使用模型,我发现自从我将应用程序从 django 开发服务器迁移到 apache 以来,这些值没有被分配。

我的调试输出显示,在分配这些值后,该值从未实际应用于模型实例,并且稍后完成保存时,这也反射(reflect)了模型实例中保留了零。

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)

            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

最佳答案

我通过将列表的 [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

关于python - 为查询集的下标元素赋值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510858/

相关文章:

python - Django 静态文件服务与 React Router 冲突

python - 类型提示字符串列表

java - Hibernate 条件 - 内部连接或条件

python - Keras 字符级 LSTM 文本分类未训练

mysql - 是否可以在 MySQL 表中向下移动列数据?

php - 如何自动增加html中的输入名称并保存在数据库中?

python - 如何避免 django 模板中出现奇怪的空格?

Django-nonrel 在管理中使用包含 EmbeddedObjects 的 ListField

python - 如何在 PyQt5 QColorDialog 中显示 alpha channel

python - 列表上的 `in` 运算符与具有多个条件的 `or` 运算符 - python