스크립트 개발 / 커넥터 객체 DFF.CONN / MySQL
MySQL 커넥터 작업 객체는 주로 MySQL을 조작하는 여러 메서드를 제공합니다. 이 커넥터는 다음 데이터베이스와 호환됩니다:
- MariaDB
- Percona Server for MySQL
- Alibaba Cloud PolarDB for MySQL
- Alibaba Cloud OceanBase
- Alibaba Cloud AnalyticDB (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(...)
INSERT, DELETE, UPDATE 등의 SQL 문을 실행하고 영향받은 행 수를 반환합니다. 매개변수는 다음과 같습니다:
| 매개변수 | 타입 | 필수 / 기본값 | 설명 |
|---|---|---|---|
sql |
str | 필수 | SQL 문. 매개변수 자리표시자를 포함할 수 있습니다.?는 이스케이프가 필요한 매개변수를 나타내고,??는 이스케이프가 필요 없는 매개변수를 나타냅니다 |
sql_params |
list | None |
SQL 매개변수 |
| 예시 | |
|---|---|
1 2 3 | |
.query(...) 및 .non_query(...)는 실행 성공 시 자동으로 트랜잭션을 커밋하고, 실행 실패 시 자동으로 롤백한 후 예외를 발생시킵니다.
보조 메서드
| 메서드 | 설명 |
|---|---|
.query_raw(sql, sql_params=None) |
DFF.SQL(...) 구성을 거치지 않고 원시 쿼리 SQL을 실행합니다 |
.non_query_raw(sql, sql_params=None) |
DFF.SQL(...) 구성을 거치지 않고 원시 비쿼리 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을 참조하세요.