[Python3] PostgreSQL

Alexandria·2024년 3월 3일

Python3 Advanced

목록 보기
15/27
post-thumbnail

1. 접속

psycopg2를 이용하여 PostgreSQL 서버로 접속할 수 있습니다.

접속 이후 close를 이용하여 세션을 종료합니다.

import psycopg2

connector   = psycopg2.connect(host="192.168.0.38", port=5432, user="test_db", password="p@ssw0rd", dbname="test_db")
cursor      = connector.cursor()

""" table initialization
SQL         = "DROP TABLE IF EXISTS tb_user"
cursor.execute(SQL)
SQL         = "CREATE TABLE IF NOT EXISTS tb_user (id SERIAL PRIMARY KEY, name varchar(255), password VARCHAR(255))"
cursor.execute(SQL)
SQL         = "DELETE FROM tb_user"
cursor.execute(SQL)
connector.commit()
"""

cursor.close()
connector.close()

2. Create

INSERT 쿼리를 통해 데이터베이스에 데이터를 생성해 봅니다.

SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다.

데이터 생성 후에는 commit을 통해 적용합니다.

import psycopg2

connector   = psycopg2.connect(host="192.168.0.38", port=5432, user="test_db", password="p@ssw0rd", dbname="test_db")
cursor      = connector.cursor()

SQL         = "INSERT INTO tb_user (name, password) VALUES ('user1','user1_password'), ('user2','user2_password'), ('user3','user3_password')"
cursor.execute(SQL)

SQL         = "INSERT INTO tb_user (name, password) VALUES (%s,%s)"
cursor.execute(SQL, ("user4", "user4_password"))
cursor.execute(SQL, ("user5", "user5_password"))
cursor.execute(SQL, ("user6", "user6_password"))
connector.commit()

cursor.close()
connector.close()

3. Read

조건에 맞는 모든 데이터를 조회할 때는 fetchall을 이용하고 한 개의 데이터만 조회한다면 fetchone을 사용합니다.

SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다.

import psycopg2

connector   = psycopg2.connect(host="192.168.0.38", port=5432, user="test_db", password="p@ssw0rd", dbname="test_db")
cursor      = connector.cursor()

SQL         = "SELECT * FROM tb_user"
cursor.execute(SQL)
rows        = cursor.fetchall()
for row in rows:
    print(row)

SQL         = "SELECT * FROM tb_user where name=?"
cursor.execute(SQL, ("user3", ))
row         = cursor.fetchone()
print(row)

cursor.close()
connector.close()

4. Update

업데이트를 통해 데이터를 변경 후 SELECT 질의를 통해 데이터의 변화를 확인해 봅니다.

SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다.

import psycopg2

connector   = psycopg2.connect(host="192.168.0.38", port=5432, user="test_db", password="p@ssw0rd", dbname="test_db")
cursor      = connector.cursor()

SQL         = "UPDATE tb_user SET password=? WHERE name=?"
cursor.execute(SQL, ("updated_password", "user5"))
connector.commit()

SQL         = "SELECT * FROM tb_user where name=?"
cursor.execute(SQL, ("user5", ))
print(cursor.fetchone())

cursor.close()
connector.close()

5. Delete

데이터를 삭제 후 SELECT 질의를 통해 데이터가 삭제됐음을 확인해 봅니다.

SQL 문에 데이터와 함께 전달할 수 있으며 excute의 인자를 통해 전달할 수 있습니다.

import psycopg2

connector   = psycopg2.connect(host="192.168.0.38", port=5432, user="test_db", password="p@ssw0rd", dbname="test_db")
cursor      = connector.cursor()

SQL         = "DELETE FROM tb_user WHERE name=?"
cursor.execute(SQL, ("user1", ))
connector.commit()

SQL         = "SELECT * FROM tb_user where name=?"
cursor.execute(SQL, ("user1", ))
print(cursor.fetchone())

cursor.close()
connector.close()
profile
IT 도서관

0개의 댓글