脚本开发 / 连接器对象 DFF.CONN / PostgreSQL
PostgreSQL 连接器操作对象主要提供一些操作 PostgreSQL 的方法。 本连接器兼容以下数据库:
- Greenplum Database
- 阿里云 PolarDB for PostgreSQL
- 阿里云分析型数据库 (ADB) PostgreSQL 版
DFF.CONN(...) 参数如下:
| 参数 | 类型 | 必须 / 默认值 | 说明 |
|---|---|---|---|
connector_id |
str | 必须 | 连接器 ID |
database |
str | None |
指定数据库 |
.query(...)
执行 SQL 语句并返回 list[dict] 格式的查询结果,参数如下:
| 参数 | 类型 | 必须 / 默认值 | 说明 |
|---|---|---|---|
sql |
str | 必须 | SQL 语句,可包含参数占位符。? 表示需要转义的参数;?? 表示不需要转义的参数 |
sql_params |
list | None |
SQL 参数 |
| 示例 | |
|---|---|
1 2 3 | |
.non_query(...)
执行写入、更新或删除等 SQL 语句并返回影响行数。参数与 .query(...) 相同。
| 示例 | |
|---|---|
1 2 3 | |
.query(...) 和 .non_query(...) 执行成功后都会自动提交事务;执行失败时自动回滚并抛出异常。
辅助方法
| 方法 | 说明 |
|---|---|
.query_raw(sql, sql_params=None) |
执行原始查询 SQL,不经过 DFF.SQL(...) 构造 |
.non_query_raw(sql, sql_params=None) |
执行原始非查询 SQL,不经过 DFF.SQL(...) 构造 |
.format_sql(sql, sql_params=None, pretty=False) |
生成最终 SQL 字符串,适合调试 |
.tables() |
返回当前数据库的表名列表 |
.create_sql_builder(raw_sql=None) |
创建 SQL Builder |
常规动态 SQL 应优先使用 .query(...) 或 .non_query(...) 的 sql_params。只有 SQL 已经由可信代码完整构造时,才使用原始 SQL 方法。
事务
需要在同一事务中执行多条 SQL 时,使用以下方法:
| 方法 | 说明 |
|---|---|
.start_trans() |
开始事务并返回事务连接对象 |
.trans_query(trans_conn, sql, sql_params=None) |
在事务中执行查询并返回 list[dict] |
.trans_non_query(trans_conn, sql, sql_params=None) |
在事务中执行非查询 SQL 并返回影响行数 |
.commit(trans_conn) |
提交事务并关闭事务连接 |
.rollback(trans_conn) |
回滚事务并关闭事务连接 |
| 示例 | |
|---|---|
1 2 3 4 | |
事务执行过程中出现异常时,应调用 .rollback(trans_conn);同一个事务连接对象完成提交或回滚后不可继续使用。
动态 SQL 语句
query(...) 和 non_query(...) 内部使用 DFF.SQL(...) 构造 SQL 语句并支持构造复杂动态的 SQL 语句。
如 WHERE IN (...) 不确定数量的值,或者 INSERT INTO ... VALUES ... 进行批量写入数据等。
详情请参考 脚本开发 / SQL 构造 DFF.SQL