0

私はdjangoで生のSQLクエリからデータを取得していますが、これで配列とwhileループと混同しました。私の選択クエリが 4 行を返し、1 人のユーザーに対して 2 行が返されるとします。したがって、4 行には 2 人のユーザーのデータが含まれます。ただし、1 人のユーザーに対応する 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

その後、エラーが発生します。

PHPで行ったように、djangoでこれを行う方法を教えてください。

4

2 に答える 2

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']] = {}
    ...
于 2013-02-07T08:32:19.047 に答える
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 に答える