如何将redshift控制台输出传递到记录器?

时间:2019-07-16 00:36:51

标签: python amazon-redshift psycopg2

我想使用psycopg2连接到Redshift服务器并执行一些SQL语句。我将其安排在气流服务器上并通过PythonOperator运行。我希望将redshift服务器控制台输出(STOUT)传递回LoggingConnection,但是它似乎只传递执行的查询。

这样做的目的是为了能够调试上游问题并记录ETL元数据(在作业上下文中)。这可能吗?

实例化一个logger对象,并使用记录器初始化conn。这行得通,但除了执行查询外,不提供任何信息。

import pandas as pd
import logging
import psycopg2 as pg
import sys
from psycopg2.extras import LoggingConnection

conn = pg.connect(<.....>)
conn.autocommit = True

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.addHandler(logging.StreamHandler(sys.stdout))
conn.initialize(logger)

cur.execute("INSERT INTO tableA <select...>")

# Example of what I want to Log:
# [2019-07-15 15:59:51] 2000 rows inserted... in 2 s 318 ms (execution: 2 s 279 ms, fetching: 39 ms)

我希望记录器从服务器控制台传递 all 输出,模拟如果在本地运行记录器会看到什么。

0 个答案:

没有答案