我怎么能发送MySQL数据库表在一个漂亮的表格格式松弛

ulmd4ohb  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(95)

请使用以下代码:

def test():
    conn = pymysql.connect(host=rds_host, user=name, password=password, db=db_name, charset='utf8')
    curs = conn.cursor(pymysql.cursors.DictCursor)
    sql = "sql"
    curs.execute(sql)
    da = curs.fetchall()
    df = pd.DataFrame(data=da, columns=['sale_date', 'total_amt'])
    df['total_amt'] = df['total_amt']
    slack_message = {
        'text': tabulate(df, tablefmt="fancy_grid",headers='keys',stralign='left')
    }
    req = Request(HOOK_URL, json.dumps(slack_message).encode('utf-8'))
    try:
        response = urlopen(req)
        response.read()
        logger.info("Message posted")
    except HTTPError as e:
        logger.error("Request failed: %d %s", e.code, e.reason)
    except URLError as e:
        logger.error("Server connection failed: %s", e.reason)

当我在pycharm中运行代码时,它运行得很好,pycharm输出:

松弛输出:

松弛输出(以韩语添加的列):

fwzugrvs

fwzugrvs1#

问题是,对于格式化常规文本(比如你在聊天中所写的内容),Slack没有使用固定间距的字体。这意味着输出不会对齐(正如你所经历的)。
要解决这个问题,你应该把你想格式化的消息部分放在'''里面。这会告诉Slack使用一个代码块来格式化内容,它有固定间距的字体,并且它应该和Pycharm的输出一样。
因此,在查看代码时,您必须添加沿着内容:

...
slack_message = {
        'text': f'```{tabulate(df, tablefmt="fancy_grid",headers='keys',stralign='left')}```'
    }
...

根据你使用的Python版本,f字符串可能不可用。如果是这种情况,请使用其他支持的格式化功能。

相关问题