> 백엔드 개발 > 파이썬 튜토리얼 > Python을 사용하여 PostgreSQL의 새로운 기능 탐색

Python을 사용하여 PostgreSQL의 새로운 기능 탐색

王林
풀어 주다: 2024-08-25 06:00:38
원래의
655명이 탐색했습니다.

Exploring New Features in PostgreSQL with Python

PostgreSQL 17은 개발자, 데이터 과학자 및 데이터베이스 관리자를 위한 다양하고 흥미로운 새 기능과 향상된 기능을 제공합니다. 이 문서에서는 PostgreSQL 17의 가장 중요한 추가 사항 및 개선 사항 중 일부를 살펴보고 Python에서 이러한 기능을 사용하는 방법을 보여줍니다.

  1. 증분 정렬로 쿼리 성능 향상 PostgreSQL 17의 뛰어난 기능 중 하나는 이제 더 광범위한 사용 사례를 지원하는 증분 정렬 알고리즘의 향상입니다. 증분 정렬은 특히 정렬된 데이터를 처리할 때 대규모 데이터 세트가 포함된 쿼리를 실행하는 데 걸리는 시간을 크게 줄일 수 있습니다.

Python 예제: PostgreSQL 17을 사용한 증분 정렬

이 기능을 사용하려면 먼저 Python의 psycopg2 라이브러리를 사용하여 PostgreSQL 연결을 설정해 보겠습니다.

`psycopg2 가져오기

PostgreSQL 데이터베이스에 연결

콘 = psycopg2.connect(
호스트="localhost",
데이터베이스="test_db",
user="postgres",
비밀번호="귀하의_비밀번호"
)

커서 개체 만들기

cur = conn.cursor()

테이블 생성 및 데이터 삽입

cur.execute("""
존재하지 않는 경우 테이블 생성 Large_dataset(
ID 직렬 기본 키,
카테고리 VARCHAR(50),
INT 값
);
""")

샘플 데이터 삽입

cur.execute("""
INSERT INTO Large_dataset(범주, 값)
선택
'카테고리' || (i % 10),
무작위() * 1000
FROM generate_series(1, 1000000) i;
""")

conn.commit()

증분 정렬 사용

cur.execute("""
설명 분석
SELECT * FROM Large_dataset
카테고리별, 값별 정렬;
""")

쿼리 계획 가져오기 및 인쇄

query_plan = cur.fetchall()
query_plan의 줄:
인쇄(라인)

커서 및 연결을 닫습니다.

cur.close()
conn.close()
`

이 예에서 PostgreSQL 17의 향상된 증분 정렬은 ORDER BY 절을 효율적으로 처리하여 데이터를 증분 정렬하고 전체 쿼리 실행 시간을 줄입니다.

  1. JSON 경로 개선 PostgreSQL 17에는 JSONPath에 대한 향상된 기능이 도입되어 JSON 데이터를 더 쉽게 쿼리하고 조작할 수 있습니다. 이는 데이터 교환을 위해 JSON에 크게 의존하는 애플리케이션에 특히 유용합니다.

Python 예: JSONPath 개선 사항 사용
`## 데이터베이스에 다시 연결
conn = psycopg2.connect(
호스트="localhost",
데이터베이스="test_db",
user="postgres",
비밀번호="귀하의_비밀번호"
)
cur = conn.cursor()

JSON 데이터로 테이블 만들기

cur.execute("""
존재하지 않는 경우 테이블 생성 json_data(
ID 직렬 기본 키,
데이터 JSONB
);
""")

샘플 JSON 데이터 삽입

cur.execute("""
json_data(데이터)에 삽입
가치
('{"이름": "앨리스", "나이": 30, "기술": ["Python", "SQL"]}'),
('{"이름": "Bob", "나이": 25, "기술": ["Java", "C++"]}');
""")

conn.commit()

JSONPath를 사용하여 JSON 데이터 쿼리

cur.execute("""
데이터 선택 ->> 'name' AS 이름, 데이터 ->> '나이' AS나이
json_data에서
@ 데이터는 어디에 있나요? '$.스킬 ? (@ == "파이썬")';
""")

결과 가져오기 및 인쇄

결과 = cur.fetchall()
결과 행의 경우:
인쇄(행)

커서 및 연결을 닫습니다.

cur.close()
conn.close()
`

이 코드는 PostgreSQL 17의 향상된 JSONPath 기능이 복잡한 조건을 기반으로 JSON 필드에서 데이터 추출을 단순화하는 방법을 보여줍니다.

  1. 인덱스 생성을 위한 향상된 병렬성 향상된 병렬 처리로 인해 이제 PostgreSQL 17의 인덱스 생성이 더욱 효율적이 되어 대규모 데이터세트에서 더 빠른 인덱싱이 가능해졌습니다.

Python 예제: 병렬 인덱스 생성
`## 데이터베이스에 다시 연결
conn = psycopg2.connect(
호스트="localhost",
데이터베이스="test_db",
user="postgres",
비밀번호="귀하의_비밀번호"
)
cur = conn.cursor()

큰 테이블 만들기

cur.execute("""
존재하지 않는 경우 테이블 생성 Large_table(
ID 직렬 기본 키,
데이터 VARCHAR(255)
);
""")

많은 수의 행 삽입

cur.execute("""
INSERT INTO Large_table(데이터)
선택
md5(random()::text)
FROM generate_series(1, 5000000);
""")

conn.commit()

병렬성을 갖춘 인덱스 생성

cur.execute("""
대형_테이블(데이터)에 대해 동시에 인덱스 생성 Large_table_data_idx;
""")

conn.commit()

커서 및 연결을 닫습니다.

cur.close()
conn.close()
`

이 예에서는 여러 CPU 코어를 사용하여 인덱스를 동시에 생성하는 PostgreSQL 17의 향상된 기능을 보여줍니다. 이는 대규모 테이블 작업 시 매우 유용합니다.

  1. SQL/JSON 표준 준수 함수 PostgreSQL 17에는 더 많은 SQL/JSON 표준 호환 기능에 대한 지원이 추가되어 더 많은 SQL 표준 구문으로 JSON 데이터를 처리하는 기능이 향상되었습니다.

Python 예제: SQL/JSON 표준 함수
`## 데이터베이스에 다시 연결
conn = psycopg2.connect(
호스트="localhost",
데이터베이스="test_db",
user="postgres",
비밀번호="귀하의_비밀번호"
)
cur = conn.cursor()

JSON 데이터로 테이블 만들기

cur.execute("""
존재하지 않는 경우 테이블 생성 Employee_data(
ID 직렬 기본 키,
정보 JSONB
);
""")

샘플 JSON 데이터 삽입

cur.execute("""
직원_데이터에 삽입(정보)
가치
('{"이름": "John", "department": "매출", "급여": 5000}'),
('{"이름": "Jane", "부서": "IT", "급여": 7000}');
""")

conn.commit()

SQL/JSON 함수를 사용한 쿼리

cur.execute("""
SELECT jsonb_path_query_first(info, '$.department') AS 부서
직원_데이터에서
WHERE jsonb_path_exists(info, '$.salary ? (@ > 6000)');
""")

결과 가져오기 및 인쇄

결과 = cur.fetchall()
결과 행의 경우:
인쇄(행)

커서 및 연결을 닫습니다.

cur.close()
conn.close()
`

이 예에서는 SQL/JSON 표준 함수를 사용하여 JSON 데이터를 쿼리하는 방법을 보여주며 PostgreSQL 17이 새로운 SQL 표준을 준수함을 보여줍니다.

PostgreSQL 17 및 새로운 기능에 대한 자세한 내용은 공식 문서를 참조하세요.

위 내용은 Python을 사용하여 PostgreSQL의 새로운 기능 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿