如何在SqlAlchemy中为列ID选择按子字符串分组?

时间:2018-06-27 03:43:21

标签: python postgresql sqlalchemy

使用模型“ LOAN_APPLICATION_HIST”中的给定数据,如下所示:

         ID          | LNCustomerID | Curr 
---------------------+--------------+------
 LA18010300013@0     | CUM02544     | 0
 LA18010300013@1     | CUM02544     | 1
 LA18010300013@2     | CUM02544     | 2
 LA18010300013@3     | CUM02544     | 3
 LA18010300013@4     | CUM02544     | 4
 LA18010300013@5     | CUM02544     | 5
 LA18010300013@6     | CUM02544     | 6
 LA18010300013@7     | CUM02544     | 7
 LA18010400021@0     | CU003664     | 0
 LA18010400024@0     | CUM00021     | 0
 LA18010400021@1     | CU003664     | 1
 LA18010400021@2     | CU003664     | 2
 LA18010400029@0     | CUM01266     | 0
 LA18010400027@0     | CU003866     | 0
 LA18010400034@0     | CU003947     | 0
 LA18010400029@1     | CUM01266     | 1
 LA18010400022@0     | CUM00021     | 0

及其类模型:

class LOAN_APPLICATION(db.Model):
    ID              = db.Column(db.String(13), primary_key=True)
    LNCustomerID    = db.Column(db.String(10))
    Curr            = db.Column(db.String(5))

有了这些功能后,我想选择ID最多的Curr列,并按ID的列按@xx分组。

我尝试过:

LoanAppHist   = db.session.query(
                                    LOAN_APPLICATION_HIST.ID,
                                    func.max(cast(LOAN_APPLICATION_HIST.Curr,sqlalchemy.Integer)).label('Curr')
                                ).\
                        group_by(LOAN_APPLICATION_HIST.ID).\
                        all()

但是,它返回所有列数据,因为列ID@xx中不是唯一的,因此我希望某些子字符串像group_by(LOAN_APPLICATION_HIST.ID[0:13])那样子字符串,其中13是@符号的索引

有什么线索可以存档魔术吗?谢谢

0 个答案:

没有答案