Python을 사용한 PostgreSQL 작업: 단계별 가이드

Python을 사용하여 PostgreSQL로 작업하는 방법을 알아보세요. 이 자습서에서는 Python을 사용하여 PostgreSQL 데이터베이스를 설치, 연결 및 쿼리하는 방법을 보여줍니다.

오늘날 다양한 유형의 데이터베이스가 사용되고 있습니다. 중앙 집중식 데이터베이스, 상용 데이터베이스, 클라우드 데이터베이스, 분산 데이터베이스, 최종 사용자 데이터베이스, NoSQL 데이터베이스, 관계형 데이터베이스 등이 있습니다.

이 기사에서는 관계형 데이터베이스(PostgreSQL)의 예와 여기에서 데이터를 쿼리하는 방법에 중점을 둘 것입니다. 관계형 데이터베이스의 다른 예로는 MySQL, MariaDB 및 SQLite가 있습니다.

이 자습서에서는 Python을 사용하여 PostgreSQL 데이터베이스를 설치, 연결 및 쿼리하는 방법을 배웁니다.

시작하려면 PostgreSQL에 대해 조금 더 배워서 쉽게 시작하겠습니다.

PostgreSQL이란 무엇입니까?

가장 잘 알려진 오픈 소스 관계형 데이터베이스 중 하나는 PostgreSQL입니다. 전 세계 모든 규모의 개발자와 기업에서 사용합니다.

PostgreSQL은 글로벌 인기도 측면에서 DB-Engines에서 4위를 차지하며 인기가 높아지고 있습니다. 많은 웹 및 모바일 애플리케이션과 분석 도구가 PostgreSQL 데이터베이스를 사용한다는 점을 고려하면 이는 놀라운 일이 아닙니다.

PostgreSQL은 또한 기본 데이터베이스와 잘 작동하는 다양한 추가 기능 및 확장 기능을 갖춘 강력한 생태계를 갖추고 있습니다. 이러한 이유로 PostgreSQL은 사용자 지정 데이터베이스 솔루션을 만들거나 트랜잭션 또는 분석 데이터베이스가 필요한 경우 환상적인 옵션입니다.

이제 PostgreSQL이 무엇인지 알았으니 Python을 사용하여 데이터베이스에 연결하는 방법에 대해 알아보겠습니다.

시작하기

Python 스크립트에서 PostgreSQL 데이터베이스 인스턴스에 연결하려면 데이터베이스 커넥터 라이브러리를 사용해야 합니다. Python의 다양한 대안 중에서 선택할 수 있지만 Psycopg2가 가장 잘 알려져 있고 널리 사용되는 것입니다.

pg8000py-postgresql 과 같이 Python으로 완전히 빌드된 대체 라이브러리가 있지만 여기서는 Psycopg2를 사용합니다.

Psycopg2란?

Psycopg2 라이브러리는 C 프로그래밍 언어를 libpq PostgreSQL 라이브러리 주변의 래퍼로 사용하여 Python DB API 2.0 표준을 지원합니다. Psycopg2의 C 구현은 매우 빠르고 효과적입니다.

SQL 쿼리를 사용하여 Psycopg2를 활용하여 데이터베이스에서 하나 이상의 행을 가져올 수 있습니다. 이 라이브러리를 사용하면 다양한 단일 또는 일괄 삽입 방법을 사용하여 데이터베이스에 데이터를 삽입할 수도 있습니다.

라이브러리는 SQL(Structured Query Language)과 같으며 쿼리 언어가 수행할 수 있는 모든 작업과 작업을 수행합니다. 유니코드와 Python 3 모두에 친숙하며 스레드 안전성도 있습니다(동일한 연결이 여러 스레드에서 공유됨).

많은 커서를 자주 생성 및 삭제하고 동시에 많은 INSERTS 또는 UPDATE를 수행하는 고도의 멀티 스레드 프로그램을 실행하도록 만들어졌습니다. Psycopg2의 기능에는 클라이언트 측 및 서버 측 커서, 비동기 통신 및 알림이 포함됩니다.

Psycopg2 설치 방법

Psycopg2를 사용하기 위해서는 먼저 Psycopg2를 설치해야 합니다. 를 사용하여 터미널이나 명령 프롬프트를 통해 설치할 수 있습니다 pip.

#installation

pip install psycopg2
pip3 install psycopg2

또한 가상 환경에 커넥터 라이브러리를 설치하기로 결정한 경우 다음 코드를 사용하여 그렇게 할 수 있습니다.

virtualenv env && source env/bin/activate
pip install psycopg2-binary

Psycopg2 라이브러리와 모든 종속성은 이 코드 스니펫을 사용하여 Python 가상 환경에 설치됩니다.

커넥터를 설치했으므로 몇 가지 쿼리를 입력해 보겠습니다.

Python을 사용하여 PostgreSQL을 쿼리하는 방법

먼저 새 파일을 만들고 원하는 이름을 지정해야 합니다. 그런 다음 IDE에서 열고 코드 작성을 시작합니다.

가장 먼저 할 일은 라이브러리를 가져오는 것입니다(이는 매우 중요합니다). 두 개의 Psycogp2 개체를 사용합니다.

  • 연결 개체 : PostgreSQL 데이터베이스 인스턴스에 대한 연결은 연결 개체에 의해 관리됩니다. 함수를 사용하여 생성된 데이터베이스 세션을 캡슐화합니다 connect().
  • 커서 개체 : 커서 개체를 사용하면 Python 스크립트가 데이터베이스 세션 내에서 PostgreSQL 명령을 실행할 수 있습니다. 연결은 커서를 생성한 다음 cursor()메서드는 커서를 연결에 영구적으로 연결합니다. 모든 명령은 연결로 묶인 데이터베이스 세션의 프레임워크 내에서 수행됩니다.
import psycopg2

conn = psycopg2.connect(database="db_name",
                        host="db_host",
                        user="db_user",
                        password="db_pass",
                        port="db_port")

데이터베이스에 연결할 수 있으려면 이러한 인수를 지정해야 합니다. 거기에 대한 논쟁을 간단히 살펴 보겠습니다.

  • database : 액세스하거나 연결하려는 데이터베이스의 이름입니다. 하나의 연결 개체로 하나의 데이터베이스에만 연결할 수 있습니다.
  • host : 데이터베이스 서버의 IP 주소나 URL을 가리킬 가능성이 높습니다.
  • user : 이름에서 알 수 있듯이 PostgreSQL 사용자의 이름을 나타냅니다.
  • password : PostgreSQL 사용자와 일치하는 비밀번호입니다.
  • port : localhost에 있는 PostgreSQL 서버의 포트 번호 – 일반적으로 5432입니다.

데이터베이스 자격 증명이 올바르게 입력된 경우 커서 개체를 빌드하는 데 사용할 수 있는 라이브 데이터베이스 연결 개체를 받게 됩니다. 커서 개체를 사용하여 모든 데이터베이스 쿼리를 실행하고 데이터를 검색할 수 있습니다.

cursor = conn.cursor()

커서 개체

간단한 쿼리를 작성해 보겠습니다.

cursor.execute("SELECT * FROM DB_table WHERE id = 1")

함수를 적용 execute()하고 매개변수로 쿼리 문자열을 제공합니다. 그런 다음 입력한 쿼리를 사용하여 데이터베이스를 쿼리합니다.

이를 성공적으로 달성한 후 Pyscopg2를 사용하여 데이터베이스에서 데이터를 검색할 수 있으려면 다음 함수 중 하나를 사용해야 합니다. , fetchone() fetchall()또는 fetchmany().

사용 방법 fetchone():

SQL 쿼리를 실행한 후 이 함수는 첫 번째 행만 반환합니다. 데이터베이스에서 데이터를 가져오는 가장 간단한 방법입니다.

#code
print(cursor.fetchone())

#output
(1, 'A-CLASS', '2018', 'Subcompact executive hatchback')

가져오기() 예제

fetchone()함수는 쿼리의 제공된 열에서 지정한 순서대로 정렬된 정보와 함께 튜플 형식의 단일 행을 반환합니다.

쿼리 문자열을 구성할 때 튜플의 어떤 데이터가 어떤 데이터에 속하는지 구별하기 위해 열 순서를 정확하게 제공하는 것이 중요합니다.

사용 방법 fetchall():

이 함수는 하나의 행이 아니라 모든 행을 반환한다는 점을 제외하고는 fetchall()동일한 방식으로 작동합니다 . fetchone()따라서 20-200개 이상의 행이 필요한 경우 Psycopg2를 사용합니다 fetchall().

#code
print(cursor.fetchall())

#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
 (2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
 (3, 'CLA', '2019', 'Subcompact executive fastback sedan'),
 (4, 'CLS', '2018', 'E-segment/executive fastback sedan'),
 (5, 'E-CLASS', '2017', 'E-segment/executive sedan'),
 (6, 'EQE', '2022', 'All-electric E-segment fastback'),
 (7, 'EQS', '2021', 'All-electric full-size luxury liftback'),
 (8, 'S-CLASS', '2020', 'F-segment/full-size luxury sedan.'),
 (9, 'G-CLASS', '2018', 'Mid-size luxury SUV, known as the G-Wagen'),
 (10, 'GLE', '2019', 'Mid-size luxury crossover SUV')]
[...]

가져오기() 예제

사용 방법 fetchmany():

fetchmany()기능을 사용하면 데이터베이스에서 여러 레코드를 가져올 수 있으며 얻을 수 있는 정확한 행 수를 추가로 제어할 수 있습니다.

#code
print(cursor.fetchmany(size=3))

#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
 (2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
 (3, 'CLA', '2019', 'Subcompact executive fastback sedan')]

fetchmany() 예제

인수를 3으로 설정했기 때문에 세 개의 행만 수신했습니다.

데이터베이스 쿼리를 마치면 와의 연결을 닫아야 합니다 conn.close().

결론

꽤 쉬웠죠? 우리는 단일 Python 스크립트에서 이러한 모든 작업을 수행할 수 있었고 정말 잘 작동했습니다.

이 기사가 도움이 되었기를 바라며 이제 Python을 사용하여 PostgreSQL로 작업할 수 있습니다.

자세한 내용은 Psycopg2 설명서를 참조하십시오 .

출처: https://www.freecodecamp.org

#postgresql #python

1.00 GEEK