我从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中如何做到这一点。
答案 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']] = {}
...