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