Python 查询多个连接sqlalchemy
我正在使用sql alchemy一部分一部分地生成一个查询。我有一个对象,它对于只有一个联接的查询非常有效: **我有一个ORM模型,但我不能使用设置的主键,因为它们不是真实的Python 查询多个连接sqlalchemy,python,postgresql,sqlalchemy,flask-sqlalchemy,postgresql-9.1,Python,Postgresql,Sqlalchemy,Flask Sqlalchemy,Postgresql 9.1,我正在使用sql alchemy一部分一部分地生成一个查询。我有一个对象,它对于只有一个联接的查询非常有效: **我有一个ORM模型,但我不能使用设置的主键,因为它们不是真实的 q = select( self.selectObj._select ).select_from( self.joinObj._join ).where( and_(*self.whereObj._where) ).group_by( *self.s
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'
我用这种方法解决了这个问题,只需在前一个联接中调用invoking.join,但只使用正确的表<代码>自我。\u join.join(右表…) 该方法的完整解决方案:
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)
严格来说,没有主键的ORM模型是不可能的,不管它们是真的还是假的。看起来你用的是核心。是的,我有ORM的主键,但不正确mapped@IljaEverilä更正了问题,对不起。你是什么意思?看起来你在使用核心。等等。都是构造。虽然这两个模块不是分开的,但是ORM构建在核心之上。