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'