Flask python Jinja

[Flask] Flask에서 postgre 연결하기

HR대장 2022. 4. 3. 10:10
728x90

먼저 sqlAlchemy (에스큐엘알케미?) 의 개념에 대해서 알아보겠습니다.

sqlAlchemy는 ORM의 하나이다. ORM이란 Object-Relational-Mapping으로 ORM을 사용하면 프레임워크 내에서

SQL을 직접 사용하지 않고도 CRUD 형태로 공통 모듈로 DBMS에 접근할 수 있습니다. (개발의 효율성 향상)

 

flask에서도 이 ORM을 지원을 하는데 이를 flask-sqlAlchemy라고 합니다.

[레퍼런스]

Flask-SQLAlchemy — Flask-SQLAlchemy Documentation (2.x) (palletsprojects.com)

 

그런데 문제는 ORM만으로 뭔가 모든 기능을 구현하기가 힘듭니다. 느낀 점으로는 테이블간의 복잡한 join 처리, 테이블간의 1:N 관계에서의 정합성 문제 등이 처리가 되지 않는 느낌이었습니다. 그래서 ORM 을 사용해서 DBMS에 접근하기 보다는 바로 connection을 맺어서 sql을 통해 질의하고 데이터를 받아오는 것이 더 수월해 보였습니다. 물론 간단한 비즈니스 로직 및 하나의 테이블을 처리하는 화면이라면 ORM이 훨씬 간편합니다!

 

flask에서 sqlAlchemy가 아닌 직접 psycobg2 라이브러리를 통해 접근하는 코드입니다.

import psycopg2
from psycopg2 import pool
from flask import Flask

app = Flask(__name__)




postgreSQL_pool = psycopg2.pool.SimpleConnectionPool(1, 20, user="postgres",
                                                         password="pass@#29",
                                                         host="127.0.0.1",
                                                         port="5432",
                                                         database="postgres_db")


@app.route('/')
def hello_world():
    # Use getconn() to Get Connection from connection pool
    ps_connection = postgreSQL_pool.getconn()
    # use cursor() to get a cursor as normal
    ps_cursor = ps_connection.cursor()
    # 
    # use ps_cursor to interact with DB
    #
    # close cursor
    ps_cursor.close()
    # release the connection back to connection pool
    postgreSQL_pool.putconn(ps_connection)
    return 'Hello, World!'

 

 

728x90