查询多个连接sqlalchemy
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询多个连接sqlalchemy相关的知识,希望对你有一定的参考价值。
我正在逐步生成一个带有sql炼金术的查询。我有这个对象只适用于只有一个连接的查询:
**我有一个ORM模型,但我不能使用设置的主键因为不是真的。
q = select( self.selectObj._select
).select_from(
self.joinObj._join
).where(
and_(*self.whereObj._where)
).group_by(
*self.selectObj._groupby
).order_by(
self.selectObj._orderby
).limit(
self.selectObj._limit
).having(
self.selectObj._having
)
我有这个方法来生成连接:
def get_joins(self, first, leftTable, rightTable, leftTableColumn, rightTableColumn, outer):
if first:
self._join = join(leftTable, rightTable, leftTableColumn == rightTableColumn, full=outer)
first = False
else:
self._join = self._join + join(leftTable, rightTable, leftTableColumn == rightTableColumn, full=outer)
我不知道,如何在select_from子句中生成,连接,获取等两个或多个连接。任何的想法?
非常感谢提前:)
最终结果应该是这样的:
SELECT a.dev, b.asha, c.unk
FROM a
FULL OUTER JOIN b ON a.dev = b.devicb
FULL OUTER JOIN c ON a.dev = c.devicc
WHERE
a.cust = 'SNTC' AND
b.cust = 'SNTC' AND
c.cust = 'SNTC' AND
a.invent = '10' AND
b.invent = '10' AND
c.invent = '10'
答案
我用这种方式解决了,只是在之前的连接中调用了.join,但只使用了正确的表。 self._join.join(rightTable,...)
该方法的完整解决方案:
def get_joins(self, first, leftTable, rightTable, leftTableColumn, rightTableColumn, outer):
if first:
self._join = join(leftTable, rightTable, leftTableColumn == rightTableColumn, full=outer)
first = False
else:
self._join = self._join.join(rightTable, leftTableColumn == rightTableColumn, full=outer)
以上是关于查询多个连接sqlalchemy的主要内容,如果未能解决你的问题,请参考以下文章