私はお互いに2つのforループを持っています。ループ1の各行 'A'、 'B'、 'C'について、ループ2のグループ 'X'のすべての親を見つけるために階層ツリーにアクセスする必要があります。これにより、各行のパスを個別に見つける必要のあるCTEを使用できます。ループ内でCTEを使用することは、各グループIDに対してどこで一致するかを確認するための解決策ではありません。このリンクを参照しますが、フラスコのフレームワークを使用して、cronジョブのための多くのLooping hierarchy CTEPythonはdouble forループでCTEをトラバースしますか?
コードスニペットを作ることができませんでした:
私は階層内assignee_groupため にすべてのグループヘッドをメールを送信する必要がs = select([rt_issues]).\
where(
and_(
rt_issues.c.status !='Closed',
rt_issues.c.assigned_to != None
))
rs = conn.execute(s)
if rs.rowcount > 0:
s4 = text('with recursive rec_grp as(select id, parent_id, name, head, 1 as level, array[id] as path_info from groups union all select grp1.id, grp1.parent_id, grp1.name, grp1.head, rc.level + 1, rc.path_info||grp1.id from groups grp1 join rec_grp rc on grp1.id = rc.parent_id) select distinct id, parent_id, name, head, path_info from rec_grp order by id')
rs4 = conn.execute(s4)
for r in rs:
head_list = []
hierarchical_grps = []
for rr in rs4:
if ((rr['path_info'][0] == r[rt_issues.c.assignee_group])):
for g in rr['path_info']:
hierarchical_grps.append(g)
hierarchical_grps = list(set(hierarchical_grps))
send_pending_mail(hierarchical_grps, r['id'])
print hierarchical_grps, 'hierarchical_grps'
exit(0)
問題。どのようにこれを達成することができます。どのようにループを正しく使用するのですか?私は、sqlalchemyコアのみ、postgresql、フラスコとPythonを使用しています。私は同じもののための正確なコードが必要です。
何作品を以下に抜粋です:これはからのクエリを想定している
rs4 = con.execute(s4)
for rr in rs4:
if rr['head']:
head_list.append(rr['id'])
print 'group heads:', head_list
:head
列がブール値であると仮定すると
mgroup = None
s = select([rt_issues]).\
where(
and_(
rt_issues.c.status !='Closed',
rt_issues.c.assigned_to != None
))
rs = conn.execute(s)
if rs.rowcount > 0:
for r in rs:
head_list = []
hierarchical_grps = []
mgroup = r[rt_issues.c.assignee_group]
s4 = text('with recursive rec_grp as(select id, parent_id, name, head, 1 as level, array[id] as path_info from groups where id=' +str(mgroup) + 'union all select grp1.id, grp1.parent_id, grp1.name, grp1.head, rc.level + 1, rc.path_info||grp1.id from groupsgrp1 join rec_grp rc on grp1.id = rc.parent_id) select distinct id,parent_id, name, head, path_info from rec_grp order by id')
rs4 = conn.execute(s4)
for rr in rs4:
if ((rr['path_info'][0] == r[rt_issues.c.assignee_group])):
for g in rr['path_info']:
hierarchical_grps.append(g)
hierarchical_grps = list(set(hierarchical_grps))
print hierarchical_grps, 'hierarchical_grps'
send_pending_mail(hierarchical_grps, r['id'])
exit(0)
テーブル構造を表示できますか?ここ、またはhttp://sqlfiddle.com/#!15 –