Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查询多个连接sqlalchemy_Python_Postgresql_Sqlalchemy_Flask Sqlalchemy_Postgresql 9.1 - Fatal编程技术网

Python 查询多个连接sqlalchemy

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

我正在使用sql alchemy一部分一部分地生成一个查询。我有一个对象,它对于只有一个联接的查询非常有效:

**我有一个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'

我用这种方法解决了这个问题,只需在前一个联接中调用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构建在核心之上。