腳本開發 / 連接器對象 DFF.CONN / MySQL
MySQL 連接器操作對象主要提供一些操作 MySQL 的方法。 本連接器兼容以下數據庫:
- MariaDB
- Percona Server for MySQL
- 阿里雲 PolarDB for MySQL
- 阿里雲 OceanBase
- 阿里雲分析型數據庫 (ADB) MySQL 版
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 語句,返回影響行數。參數如下:
| 參數 | 類型 | 必須 / 默認值 | 説明 |
|---|---|---|---|
sql |
str | 必須 | SQL 語句,可包含參數佔位符。? 表示需要轉義的參數;?? 表示不需要轉義的參數 |
sql_params |
list | None |
SQL 參數 |
| 示例 | |
|---|---|
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