我想使用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 输出,模拟如果在本地运行记录器会看到什么。