python中数组和while循环的问题

时间:2013-02-07 05:09:28

标签: django while-loop django-queryset

我从django中的原始sql查询中获取数据,但是我对数组和while循环感到困惑。假设我的select查询为一个用户返回4行,2行,因此4行将拥有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中做到这一点,如何在循环中使用多数组,如果我使用for循环OR这样循环:

arr={}

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

      **OR**
    while row in cursor:
        pass

然后它会出错。

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

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

你看过https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly了吗? 试试这种方式:

arr = {}
rows = dictfetchall(cursor)
for row in rows:
    if not arr.get(row['entity_id'], False):
        arr[row['entity_id']] = {}
    ...