PostgreSQL 連線¶
Postgres 連線型別提供了與 Postgres 資料庫的連線能力。
配置連線¶
- 主機 (必需)
要連線的主機。
- 資料庫 (可選)
指定要連線的資料庫名稱。
注意
如果您想定義預設的資料庫 schema
使用
PostgresOperator,請參閱 將伺服器配置引數傳遞給 PostgresOperator使用
PostgresHook,請參閱 search_path
- 使用者名稱 (必需)
指定用於連線的使用者名稱。
- 密碼 (必需)
指定用於連線的密碼。
- 額外引數 (可選)
指定可在 Postgres 連線中使用的額外引數(以 JSON 字典形式)。支援以下非標準 Python 引數:
sslmode- 此選項決定是否以及以何種優先順序與伺服器協商安全的 SSL TCP/IP 連線。有六種模式:disable、allow、prefer、require、verify-ca、verify-full。sslcert- 此引數指定客戶端 SSL 證書的檔名,用於替代預設值。sslkey- 此引數指定客戶端 SSL 金鑰的檔名,用於替代預設值。sslrootcert- 此引數指定包含 SSL 證書頒發機構 (CA) 證書的檔名。sslcrl- 此引數指定 SSL 證書吊銷列表 (CRL) 的檔名。application_name- 為 application_name 配置引數指定一個值。keepalives_idle- 控制 TCP 在空閒多少秒後應向伺服器傳送 keepalive 訊息。client_encoding: 指定客戶端連線的編碼(字元集)。請參閱 Postgres 支援的字元集cursor- 指定查詢資料庫時使用的遊標型別。您可以選擇以下之一:dictcursor: 使用psycopg2.extras.DictCursor將查詢結果返回為 Python 字典。realdictcursor: 類似於DictCursor,但使用psycopg2.extras.RealDictCursor以獲得稍好的效能。namedtuplecursor: 使用psycopg2.extras.NamedTupleCursor將查詢結果返回為 named tuple。
更多資訊,請參閱 psycopg2 文件中關於 連線和遊標子類 的部分。
有關所有支援的 Postgres 引數的更多詳細資訊,請參閱 Postgres 文件。
“extra” 欄位示例
{ "sslmode": "verify-ca", "sslcert": "/tmp/client-cert.pem", "sslca": "/tmp/server-ca.pem", "sslkey": "/tmp/client-key.pem" }
以下額外引數用於額外的 Hook 配置
iam- 如果設定為True,則使用 AWS IAM 資料庫身份驗證連線 Amazon RDS、Amazon Aurora 或 Amazon Redshift。aws_conn_id- 用於透過 AWS IAM 進行身份驗證的 AWS 連線 ID,如果未指定,則使用 aws_default。redshift- 在啟用 AWS IAM 資料庫身份驗證時使用。如果設定為True,則對 Amazon Redshift 叢集進行身份驗證,否則對 Amazon RDS 或 Amazon Aurora 進行身份驗證。cluster-identifier- 包含您請求憑據的資料庫的 Amazon Redshift 叢集的唯一識別符號。此引數區分大小寫。如果未指定,則使用 連線主機 的主機名。
“extra” 欄位示例 (Amazon RDS PostgreSQL 或 Amazon Aurora PostgreSQL)
{ "iam": true, "aws_conn_id": "aws_awesome_rds_conn" }
“extra” 欄位示例 (Amazon Redshift)
{ "iam": true, "aws_conn_id": "aws_awesome_redshift_conn", "redshift": "/tmp/server-ca.pem", "cluster-identifier": "awesome-redshift-identifier" }
當將連線指定為 URI(在
AIRFLOW_CONN_{CONN_ID}變數中)時,您應遵循資料庫連線的標準語法進行指定,其中 extra 引數作為 URI 的引數傳遞(請注意,URI 的所有元件都應進行 URL 編碼)。例如
export AIRFLOW_CONN_POSTGRES_DEFAULT='postgresql://postgres_user:XXXXXXXXXXXX@1.1.1.1:5432/postgresdb?sslmode=verify-ca&sslcert=%2Ftmp%2Fclient-cert.pem&sslkey=%2Ftmp%2Fclient-key.pem&sslrootcert=%2Ftmp%2Fserver-ca.pem'