Perpustakaan Flask PostgreSQL menyediakan antarmuka yang nyaman untuk mengintegrasikan database PostgreSQL ke dalam aplikasi Flask. Perpustakaan ini menyederhanakan interaksi basis data dengan menawarkan API yang mudah digunakan yang mirip dengan flask-sqlalchemy.
Demo: Saya membuat medium medium menggunakan kedua flask-sqlalchemy dan flask_postgresql dengan perubahan dua tiga baris kode. Dalam demo ini saya menggunakan perpustakaan flask_login yang juga didukung oleh perpustakaan flask_postgresql saya.
Anda dapat menginstal perpustakaan Flask PostgreSQL menggunakan PIP:
pip install flask-pgsql --user
Tambahkan Dukungan Flask_login Library ✅
from flask_login import UserMixin , LoginManager , ...
class USERS ( UserMixin , db . Model ): ...Gunakan MetaClass karena sifat kelas sudah usang dalam Python 3.11 dan tidak akan didukung dalam Python 3.13
class BaseModel :
...
@ classmethod
@ property # Class properties are deprecated in Python 3.11 and will not be supported in Python 3.13
def query ( cls ): ...Lakukan sesuatu seperti ini.
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 ()ganti dengan
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] Untuk menginisialisasi koneksi PostgreSQL, impor kelas PostgreSQL dari flask_postgresql dan berikan parameter koneksi yang diperlukan:
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 ) Tentukan model database Anda dengan mensubklass db.Model . Berikut adalah contoh mendefinisikan BLOGS dan model 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 } )" Buat Tabel Database Menggunakan metode create_all() :
db . create_all ()
# or you can recreate any special table
# USERS.create()
# BLOGS.create() Anda dapat meminta data menggunakan atribut query model Anda:
users = USERS . query . all ()
user = USERS . query . get ( id = 12 ) Anda dapat menambahkan data ke database menggunakan metode add() :
new_user = USERS ( username = "example_user" )
db . session . add ( new_user )
db . session . commit () Anda dapat menghapus data dari database menggunakan metode delete() :
user_to_delete = USERS . query . get ( id )
user_to_delete . delete ()
db . session . commit ()Sementara perpustakaan Flask PostgreSQL dirancang untuk aplikasi Flask, itu juga dapat digunakan dalam kerangka kerja lain atau skrip python mandiri yang memerlukan integrasi basis data PostgreSQL.
Kontribusi dipersilakan! Jika Anda menemukan masalah atau memiliki saran untuk perbaikan, jangan ragu untuk membuka masalah atau mengirimkan permintaan tarik.