0

我正在从 django 中的原始 sql 查询中获取数据,但是我对数组和 while 循环感到困惑。假设我的选择查询返回 4 行,一个用户 2 行,因此四行将包含 2 个用户的数据。但是与一个用户对应的两行具有相似的数据,除了最后一列。

r1 --> a , b , c , d , 1 
r2 -- > a , b , c , d , 0

在 php 中,我已经这样做了。$arr=数组();

while($result= mysql_fetch_assoc($select))
    { 
        if(!isset($arr[$result['entity_id']]['lastname'])){
            $arr[$result['entity_id']]['firstname'] = $result['info'];
        }
        $arr[$result['entity_id']]['lastname'] = $result['info'];
        $arr[$result['entity_id']]["email"]=$result['email'];
        $arr[$result['entity_id']]["style_quiz_score"]=$result['style_quiz_score'];
        $arr[$result['entity_id']]["style_quiz_answer"]=$result['style_quiz_answer'];
        $arr[$result['entity_id']]["date_joined"]=$result['date_joined'];
        $arr[$result['entity_id']]["is_active"]=$result['is_active'];

        $arr[$result['entity_id']]["username"]=normalize_str($result['email']);
    }

但是我很惊讶如何在 django 中做到这一点,如何在 while 循环中使用多数组,如果我使用 for 循环或 while 循环,如下所示:

arr={}

    for row in cursor:
      arr[row['0']]['firstname']=row[0]

      **OR**
    while row in cursor:
        pass

然后它给出错误。

所以请建议我如何在 django 中做到这一点,就像我在 PHP 中所做的那样。

4

2 回答 2

1

我从游标中获取行的方法(使用 MySQLdb 库):

for row in cursor.fetchall():
    variable = row[number_of_column]

检查元素是否存在于多数组中的一些代码:

array = [[1,2,3], [4,5,6]]
for element in array:
    if element[0] == 1:
        print 'ok'
于 2013-02-07T08:30:35.623 回答
1

您是否直接查看了https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-direct?试试这种方式:

arr = {}
rows = dictfetchall(cursor)
for row in rows:
    if not arr.get(row['entity_id'], False):
        arr[row['entity_id']] = {}
    ...
于 2013-02-07T08:32:19.047 回答