Chapter 15 内置工作流SQLReport
sqlreport是girlfriend内置的一个示范性工作流,虽然是示范,但其实跑数据也挺好用的,它可以读取一个json格式的任务描述文件,并将任意多条SQL导出为Excel表格,并把表格以附件或者邮件正文的形式发送给目标用户。
sqlreport的源码位于girlfriend.workflow.builtin.sqlreport
模块。因为该模块已被注册到名称为girlfriend.workflow
的entry_point,所以可以直接这样运行:
gf_workflow -m :sqlreport -t task.json
sqlreport只接受一个参数,该参数指定了任务描述文件。
任务描述文件说明
# 该单元为SQL任务,db为连接的数据库,sql为要执行的SQL语句,table为表名称,同时# 会用作Excel Sheet名称
# titles 为表格各字段的名称,必须按照顺序
{
"db": "user",
"sql": "select id, email, cat_num from user",
"table": "注册用户",
"titles": ["编号", "姓名", "宠物猫数目"]
}
{
"db": "product",
"sql": "select id, name, sell_num from product",
"table": "商品销售详情",
"titles": ["编号", "姓名", "销售数目"]
}
# 该单元描述邮件发送详情,可选,server为要使用的smtp服务器,sender为发件人,receivers为收件人
# 当receivers为逗号隔开的字符串时,会一并发送给所有的收件人,方便统一沟通,当receivers为数组时,会单独发给每个人
# content为html形式的邮件正文,table为要在正文显示的html表格
{
"server": "test",
"sender": "[email protected]",
"receivers": "[email protected]",
"subject": "数据邮件",
"content": "<h1>数据报表</h1>",
"table": [0, 1],
}
# 该单元描述导出Excel文件,sheets为包含的数据库表,从0开始计数
{
"workbook": "test.xlsx",
"sheets": [0, 1]
}