2 つの SQL テーブルがあります。
CREATE TABLE IF NOT EXISTS `test` (
`id_block` int(11) NOT NULL AUTO_INCREMENT,
`label` varchar(30) NOT NULL,
PRIMARY KEY (`id_block`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
INSERT INTO `test` (`id_block`, `label`) VALUES
(1, 'Cat1'),
(2, 'Cat2'),
(3, 'Cat3'),
(4, 'Cat4'),
(5, 'Cat5'),
(6, 'Cat6'),
(7, 'Cat7');
CREATE TABLE IF NOT EXISTS `test2` (
`id_block` int(11) NOT NULL,
`id_parent` int(11) NOT NULL,
PRIMARY KEY (`id_block`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test2` (`id_block`, `id_parent`) VALUES
(1, 0),
(2, 0),
(3, 2),
(4, 2),
(5, 3),
(6, 4),
(7, 2);
ブロックには 1 つ、2 つ、または 3 つの親があるため、2 つのテーブルがあります。
ここで私のSQLクエリ:
SELECT T.id_block, T2.id_block, label, id_parent
FROM test T
INNER JOIN test2 T2 ON T.id_block = T2.id_block
このスクリプトを使用して、これらの情報をリストに入れました。
conn = MySQLdb.connect('localhost','user','pass', 'db')
curs = conn.cursor()
result=curs.execute("SELECT ....")
cats = curs.fetchall()
curs.close()
conn.close()
出力:
cats = ((1L, 1L, 'Cat1', 0L), (2L, 2L, 'Cat2', 0L), (3L, 3L, 'Cat3', 2L), (4L, 4L, 'Cat4', 2L), (5L, 5L, 'Cat5', 3L), (6L, 6L, 'Cat6', 4L), (7L, 7L, 'Cat7', 2L))
そのような階層的/ネストされた辞書が欲しいです:
dict = {"Cat1": {}, "Cat2": {"Cat3": {"Cat5": {}}, "Cat4": {}, "Cat7": {}}}
解決策はありますか?
前もって感謝します、