본문 바로가기
  • 기억보단 기록을..
Database/SQL

01_python & postgreSQL 연동하기

by reine94._.dev 2020. 12. 28.

PostgreSQL

설치법은 다른 블로그들 많으니 생략


  • Table of Contents
    1. psycopg2 또는 sqlalchemy 모듈 설치
    2. 기본적인 코드 설명
    3. 요약

 


  • 설치
$ pip install psycopg2

 

  • Python 연결코드

1. 데이터 연결 및 삽입
  - postgreSQL 설치할 때, 설정한 host, dbname, user, password 입력

import psycopg2

# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"

# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")

cursor = conn.cursor()

# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")

# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")

# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")

# Clean up
conn.commit()
cursor.close()
conn.close()

 

2. 데이터 읽기
다음 코드 예제에서는 PostgreSQL 데이터베이스에 연결하고
  - SQL SELECT 에서 cursor.execute를 사용하여 데이터를 읽습니다.
  - cursor.fetchall()은 쿼리를 수락하고 다음을 사용하여 반복할 결과 집합을 반환합니다.

# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()

# Print all rows
for row in rows:
    print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))


3. 데이터 업데이트
  - SQL Update 에서 cursor.execute() 를 사용하여 데이터를 업데이트 합니다.

# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")


4. 데이터 삭제
  - SQL Delete 에서 cursor.execute() 를 사용하여 데이터를 삭제 합니다.

# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")

 

  • 요약
    • python 에서 postgreSQL DB server와 코드로 연결하는 법을 알아보았음.
    • Table을 만들고, 기본적인 CRUD 기능을 살펴보았음
    • 응용하거나, pandas DataFrame으로 만드는방법 등등 여러 블로그 참조
# DB에서 받아온 정보를 DataFrame 으로 만들기
import pandas as pd

your_dataframe = pd.DataFrame(cur.fetchall())
your_dataframe .columns = [desc[0] for desc in cur.description]

 

댓글