PostgreSQL 连接¶
Postgres 连接类型提供与 Postgres 数据库的连接。
配置连接¶
- 主机 (必需)
要连接的主机。
- 数据库 (可选)
指定要连接的数据库的名称。
注意
如果要定义默认数据库模式
使用
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 应向服务器发送保持活动消息的非活动秒数。client_encoding
:指定客户端连接的客户端编码(字符集)。请参阅Postgres 支持的字符集cursor
- 指定查询数据库时要使用的光标类型。您可以选择以下选项之一dictcursor
:使用psycopg2.extras.DictCursor
将查询结果作为 Python 字典返回。realdictcursor
:类似于DictCursor
,但使用psycopg2.extras.RealDictCursor
以获得稍微更好的性能。namedtuplecursor
:使用psycopg2.extras.NamedTupleCursor
将查询结果作为命名元组返回。
有关更多信息,请参阅 psycopg2 文档,了解 连接和光标子类。
有关支持的所有 Postgres 参数的更多详细信息,请参阅Postgres 文档。
“extras”字段示例
{ "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 集群的唯一标识符。此参数区分大小写。如果未指定,则使用连接主机中的主机名。
“extras”字段示例(Amazon RDS PostgreSQL 或 Amazon Aurora PostgreSQL)
{ "iam": true, "aws_conn_id": "aws_awesome_rds_conn" }
“extras”字段示例(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}
变量中)时,您应按照 DB 连接的标准语法指定它,其中额外参数作为 URI 的参数传递(请注意,URI 的所有组成部分都应进行 URL 编码)。例如
export AIRFLOW_CONN_POSTGRES_DEFAULT='postgresql://postgres_user:[email protected]:5432/postgresdb?sslmode=verify-ca&sslcert=%2Ftmp%2Fclient-cert.pem&sslkey=%2Ftmp%2Fclient-key.pem&sslrootcert=%2Ftmp%2Fserver-ca.pem'