query

async AsyncJournalModel.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排序

返回类型

Tuple[DataFrame, DataFrame]