query¶
- JournalModel.query(where=None, head_column=None, line_column=None, sort_config=None)¶
凭证数据查询
- 参数
where (
Union
[str
,Term
,EmptyCriterion
,None
]) – 查询条件,条件字段名必须与凭证头、行表上字段名保持一致(格式 可参考 数据表(DataTableMySQL)的条件格式)head_column (
Optional
[List
[str
]]) – 查询返回的头表字段集合 如: [“entity”,”year”,”journal_id”]line_column (
Optional
[List
[str
]]) – 查询返回的行表字段集合 如: [“journal_id”,”line_no”,”account”,”trx_amount”]sort_config (
Optional
[List
[JournalSortConfig
]]) – 排序配置集合 如: [{“col”: “journal_id”,”type”: “asc”},{“col”: “line_no”,”type”: “asc”}]
示例
# 创建凭证组件元素对象 journal = JournalModel(element_name="ZHY_TEST_0615_01") t = journal.table # 查询数据的条件 (格式 可参考 数据表(DataTableMySQL)的条件格式,& 表示 and,| 表示 or) where = ( ((t.journal_id == 'head_main_id_202306080001') | (t.line_no == '1')) & (t.entity.isin(['A','B']) | t.journal_id.like('head_main_id_202306080002%')) ) head_columns = ["entity", "journal_id", "year", "period", "journal_name"] line_columns = ["journal_id", "line_no", "account", "trx_amount", "debit", "credit"] sort = [{"col": "journal_id", "type": "desc"}, {"col": "line_no", "type": "asc"}] # 调用查询方法,并返回 头和行的 DataFrame head_df, line_df = journal.query(where=where, head_column=head_columns, line_column=line_columns, sort_config=sort)
将执行sql:(只需关注 where 后的条件)
select h.*,l.* FROM 凭证头表 h left join 凭证行表 l on h.journal_id = l.journal_id WHERE (h.`year`='2023' OR `h.journal_id`= 'head_main_id_202306080001') AND (h.`entity` IN ('A','B') OR h.`journal_id` LIKE 'head_main_id_202306080002%')
提示
where
查询条件为空时,将返回该凭证模型下的所有数据head_column
字段名必须与凭证头表上字段名保持一致,为空时,将返回凭证头表上所有字段(不管是否指定了返回字段,其中 journal_id 字段一定会返回)
line_column
字段名必须与凭证行表上字段名保持一致,为空时,将返回凭证行表上所有字段(不管是否指定了返回字段,其中 journal_id 和 line_no 字段一定会返回)
sort_config
默认按journal_id和line_no 升序,type 为空时,默认按ASC排序