在以下场景中尝试(并且失败)了解如何使用SQLAlchemy:
假设我有一个数据库:
A has a (one -> many) relationship to B
B has a (one -> many) relation to C
如果我想循环通过给出A的所有B,我可以这样做:
for b in a.bs:
print "hello"
如果我想遍历所有间接属于A的C,我可以这样做:
for b in a.bs:
for c in b.cs:
print "hello"
但是,我知道最外层循环的每次迭代都会执行一个新的SQL查询。
我理解我可以使用subqueryload来防止这种情况发生:
for b in session.query( b ).options( subqueryload( B.c ) ).filter_by( B.a_id == a.id ):
for c in b.cs:
print "hello"
这是最干净的方式吗?
是否有一些语法可以让我从实际的'a'对象开始。也许是这样的事情:
for b in a.bs.options( subqueryload( B.c ) ):
...
非常感谢您的帮助
答案 0 :(得分:0)
你可以echo f | xcopy /y "$(TargetPath)" "$(SolutionDir)ProjOne\bin\Debug$(TargetFileName)"
这样的任意连接路径:
subqueryload
这会使用三个查询,并会为session.query(A).options(subqueryload(A.b).subqueryload(B.c))
中的每个A.b
加载B.c
和B
。