PostgrSQL 绑定规范

PostgreSQL 绑定组件的详细文档

配置

要设置与 PostgreSQL相关的 绑定,需要创建类型 bindings.postgres 的组件。 请参阅本指南,了解如何创建和应用绑定配置。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
  namespace: <NAMESPACE>
spec:
  type: bindings.postgres
  version: v1
  metadata:
  - name: url # Required
    value: <CONNECTION_STRING>

元数据字段规范

字段 必填 绑定支持 详情 示例
url 输出 Postgres连接字符串的写法,请参阅此处 "user=dapr password=secret host=dapr.example.com port=5432 dbname=dapr sslmode=verify-ca"

URL格式

PostgreSQL 绑定在内部使用pgx 连接池 ,因此url 参数可以是任何有效的连接字符串,可以是DSN 或者URL格式:

DSN示例

user=dapr password=secret host=dapr.example.com port=5432 dbname=dapr sslmode=verify-ca

URL示例

postgres://dapr:secret@dapr.example.com:5432/dapr?sslmode=verify-ca

这两种方法还支持连接池配置变量:

  • pool_min_conns:整数 0 或更大
  • pool_max_conns: 大于 0 的整数
  • pool_max_conn_lifetime:持续时间
  • pool_max_conn_idle_time:持续时间
  • pool_health_check_period: 持续时间

绑定支持

该组件支持一下操作的输出绑定

  • exec
  • query
  • close

执行

exec 操作可用于 DDL 操作(如表创建),以及 INSERTUPDATEDELETE 仅返回元数据的操作(例如受影响的行数)。

请求

{
  "operation": "exec",
  "metadata": {
    "sql": "INSERT INTO foo (id, c1, ts) VALUES (1, 'demo', '2020-09-24T11:45:05Z07:00')"
  }
}

响应

{
  "metadata": {
    "operation": "exec",
    "duration": "294µs",
    "start-time": "2020-09-24T11:13:46.405097Z",
    "end-time": "2020-09-24T11:13:46.414519Z",
    "rows-affected": "1",
    "sql": "INSERT INTO foo (id, c1, ts) VALUES (1, 'demo', '2020-09-24T11:45:05Z07:00')"
  }
}

查询

query 操作用于 SELECT 语句,该语句以行值数组的形式返回元数据和数据。

请求

{
  "operation": "query",
  "metadata": {
    "sql": "SELECT * FROM foo WHERE id < 3"
  }
}

响应

{
  "metadata": {
    "operation": "query",
    "duration": "432µs",
    "start-time": "2020-09-24T11:13:46.405097Z",
    "end-time": "2020-09-24T11:13:46.420566Z",
    "sql": "SELECT * FROM foo WHERE id < 3"
  },
  "data": "[
    [0,\"test-0\",\"2020-09-24T04:13:46Z\"],
    [1,\"test-1\",\"2020-09-24T04:13:46Z\"],
    [2,\"test-2\",\"2020-09-24T04:13:46Z\"]
  ]"
}

关闭

最后, close 操作可用于显式关闭数据库连接并将其返回到池中。 此操作没有任何响应。

请求

{
  "operation": "close"
}

备注:PostgreSql绑定资深不会阻止SQL注入,需要像其他数据库应用一样,在执行查询之前验证输入。

相关链接