Flask PostgreSQL 라이브러리는 PostgreSQL 데이터베이스를 Flask 응용 프로그램에 통합하기위한 편리한 인터페이스를 제공합니다. 이 라이브러리는 Flask-Sqlalchemy와 유사한 사용하기 쉬운 API를 제공하여 데이터베이스 상호 작용을 단순화합니다.
데모 : 나는 플라스크 -SqlalChemy와 Flask_postgresql을 사용하여 2 개의 3 줄의 코드를 변경하여 중간 클론을 만들었습니다. 이 데모에서는 flask_postgresql 라이브러리에서도 지원되는 flask_login 라이브러리를 사용합니다.
PIP를 사용하여 Flask PostgreSQL 라이브러리를 설치할 수 있습니다.
pip install flask-pgsql --user
지원 flask_login 라이브러리 추가를 추가하십시오
from flask_login import UserMixin , LoginManager , ...
class USERS ( UserMixin , db . Model ): ...클래스 속성이 Python 3.11에서 더 이상 사용되지 않으므로 Python 3.13에서는 지원되지 않기 때문에 metaclass를 사용하십시오.
class BaseModel :
...
@ classmethod
@ property # Class properties are deprecated in Python 3.11 and will not be supported in Python 3.13
def query ( cls ): ...이렇게 Somethig를하십시오.
class MetaModel ( type ): ...
class BaseModel ( metaclass = MetaModel ): ... from flask_sqlalchemy import SQLAlchemy
app . config [ 'SQLALCHEMY_DATABASE_URI' ] = 'sqlite:///' + os . path . join ( basedir , 'database \ database.db' )
app . config [ 'SQLALCHEMY_TRACK_MODIFICATIONS' ] = False
db = SQLAlchemy ( app ) # Creating an SQLAlchemy instance
...
if __name__ == "__main__" :
if RESET :
with app . app_context (): db . create_all ()교체하십시오
from flask_postgresql import PostgreSQL
db = PostgreSQL ( hostname = hostname , port = port , database = database , username = username , password = password )
...
if __name__ == "__main__" :
if RESET :
db . create_all () # with app.app_context(): db.create_all() will also work class Test ( db . Model ):
id = db . Column ( db . Integer , primary_key = True )
data = db . Column ( db . Integer , array = True )
def __repr__ ( self ):
return f"Test( { self . id } , { self . data } )"
db . create_all ()
p = Test ( data = [ 21 , 24 ])
db . session . add ( p )
db . session . commit ()
Test . query . get ( id = 1 ). data #-> [21, 24] PostgreSQL 연결을 초기화하려면 flask_postgresql 에서 PostgreSQL 클래스를 가져 와서 필요한 연결 매개 변수를 제공합니다.
import os
from flask_postgresql import PostgreSQL
# Retrieve database connection parameters from environment variables
hostname = os . getenv ( "db_hostname" )
port = int ( os . getenv ( "db_port" ))
database = os . getenv ( "db_database" )
username = os . getenv ( "db_username" )
password = os . getenv ( "db_password" )
# Initialize the PostgreSQL connection
db = PostgreSQL ( hostname = hostname , port = port , database = database , username = username , password = password ) db.Model 서브 클래스하여 데이터베이스 모델을 정의하십시오. 다음은 BLOGS 및 USERS 모델을 정의하는 예입니다.
class BLOGS ( db . Model ):
id = db . Column ( db . Integer , primary_key = True )
user_id = db . Column ( db . Integer , nullable = False )
title = db . Column ( db . String ( 100 ), nullable = False )
description = db . Column ( db . String ( 200 ), nullable = True )
data = db . Column ( db . Text , nullable = False )
def __repr__ ( self ):
return f" { self . id } ). Name : { self . user_id } , title: { self . title } , description: { self . description } , data: { self . data } "
class USERS ( db . Model ):
id = db . Column ( db . Integer , primary_key = True )
username = db . Column ( db . String ( 80 ), unique = True , nullable = False )
email = db . Column ( db . String ( 120 ), unique = True , nullable = False )
age = db . Column ( db . Integer )
is_active = db . Column ( db . Boolean , default = True )
bio = db . Column ( db . Text )
details = db . Column ( db . JSON , nullable = True )
profile_image = db . Column ( db . LargeBinary )
created_at = db . Column ( db . DateTime , default = db . func . now ())
def __repr__ ( self ):
return f"Test( { self . id } , { self . username } , { self . email } , { self . age } , { self . is_active } , { self . bio } , { self . profile_image } , { self . created_at } )" create_all() 메소드를 사용하여 데이터베이스 테이블 작성 :
db . create_all ()
# or you can recreate any special table
# USERS.create()
# BLOGS.create() 모델의 query 속성을 사용하여 데이터를 쿼리 할 수 있습니다.
users = USERS . query . all ()
user = USERS . query . get ( id = 12 ) add() 메소드를 사용하여 데이터베이스에 데이터를 추가 할 수 있습니다.
new_user = USERS ( username = "example_user" )
db . session . add ( new_user )
db . session . commit () delete() 메소드를 사용하여 데이터베이스에서 데이터를 삭제할 수 있습니다.
user_to_delete = USERS . query . get ( id )
user_to_delete . delete ()
db . session . commit ()Flask PostgreSQL 라이브러리는 Flask 응용 프로그램을 위해 설계되었지만 PostgreSQL 데이터베이스 통합이 필요한 다른 프레임 워크 또는 독립형 파이썬 스크립트에서도 사용할 수 있습니다.
기부금을 환영합니다! 문제가 발생하거나 개선에 대한 제안이있는 경우, 문제를 열거나 풀 요청을 제출하십시오.