본문 바로가기
Programming 개발은 구글로/기타 정보

[WEB+AI] 7일차 Gradio + PostgreSQL로 메모장 만들기

by 40대직장인 2024. 10. 22.

Gradio + PostgreSQL로 메모장 만들기

 

강사: 생활코딩 이고잉님

 

🟦 supabase에 메모장이 저장될 DB 만들기

  - supabase에서 table 생성

CREATE TABLE
  memo_db (
    id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    CONTENT TEXT NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
  );

INSERT INTO
  memo_db (id, CONTENT, created_at)
VALUES
  (
    DEFAULT,
    '이것은 첫 번째 메모의 내용입니다.',
    CURRENT_TIMESTAMP
  ),
  (
    DEFAULT,
    '이것은 두 번째 메모의 내용입니다.',
    CURRENT_TIMESTAMP
  ),
  (
    DEFAULT,
    '이것은 세 번째 메모의 내용입니다.',
    CURRENT_TIMESTAMP
  ),
  (
    DEFAULT,
    '이것은 네 번째 메모의 내용입니다.',
    CURRENT_TIMESTAMP
  ),
  (
    DEFAULT,
    '이것은 다섯 번째 메모의 내용입니다.',
    CURRENT_TIMESTAMP
  );

  SELECT * FROM memo_db

 

  - Colab - Gradio

sql = "SELECT * FROM memo_db"

!pip install psycopg2-binary # PostgreSQL DB와 파이썬 연동하는 라이브러리

 

 

  - supabase -> project -> project settings -> Database -> Connection parameters 정보를 가져옴.

 

  - connect PostgreSQL

import psycopg2 as ps

conn = ps.connect(
    host="aws-0-ap-northeast-2.pooler.supabase.com",
    port="6543",
    database="postgres",
    user="postgres.grwjvatokgumdammwfzx",
    password="패스워드 입력"
)

 

* 패스워드 분실 시 Database password로 Reset .

 

  - 커서 생성

cur = conn.cursor()

 

  - 쿼리 실행

query = "SELECT * FROM memo_db"
cur.execute(query) 
rows = cur.fetchall() # rows에 PostgreSQL DB 정보 저장

 

  - gradio import

import gradio as gr

 

  - 접속 종료

cur.close()
conn.close()

 


🟩 메모장 만들기 전체 코드

import gradio as gr
import psycopg2 as ps

def connect_db():
    return ps.connect(
    host="aws-0-ap-northeast-2.pooler.supabase.com",
    port="6543",
    database="postgres",
    user="postgres.grwjvatokgumdammwfzx",
    password="패스워드 입력"
    )

def insert_memo(memo):
    # DB 연결
    conn = connect_db()
    # 커서 생성     
    cur = conn.cursor()     
    # INSERT INTO memo_db (content) VALUES (memo의 값)
    cur.execute("INSERT INTO memo_db (content) VALUES (%s)", (memo, ))
    conn.commit()
    # 연결 종료
    cur.close()
    conn.close()
    return get_memos()

def get_memos():
    # 데이터베이스 연결
    conn = connect_db()
    cur = conn.cursor()  # 커서 생성
    
    # 메모를 가져오는 SQL 쿼리 실행
    cur.execute("SELECT id, content FROM memo_db ORDER BY id DESC")
    rows = cur.fetchall()  # 결과 가져오기
    
    # 연결 닫기
    cur.close()
    conn.close()
    
    # 메모 목록을 리스트로 저장
    result = ""
    for row in rows:
        result += str(row[0]) + ": " + row[1] + "\n"  # id와 내용 합쳐서 결과에 추가
    
    # 메모가 없을 때
    if result == "":
        return "저장된 메모가 없습니다."
    
    return result

app = gr.Interface(
    fn = insert_memo,
    inputs = gr.Textbox(label="메모를 입력하세요."),
    outputs = gr.Textbox(label="메모 목록", interactive=False, value=get_memos())
)

app.launch(debug=True)

 

 

참고자료: 컴퓨터의 달인 - Gradio

https://www.youtube.com/watch?v=lSNYUHa9Ya0

 


출처: AI Hub 교육과정 - WEB+AI (위 내용이 문제가 된다면 댓글에 남겨주세요. 바로 삭제조치하도록 하겠습니다.)

 

 

댓글