La bibliothèque FLASK PostgreSQL fournit une interface pratique pour intégrer les bases de données PostgreSQL dans les applications FLASK. Cette bibliothèque simplifie les interactions de la base de données en offrant une API facile à utiliser similaire à Flask-Sqlalchemy.
Demo: J'ai fabriqué MediumClone en utilisant à la fois Flask-Sqlalchemy et Flask_PostgreSQL avec un changement de deux trois lignes de code. Dans cette démo, j'utilise la bibliothèque flask_login qui est également prise en charge par ma bibliothèque flask_postgresql.
Vous pouvez installer la bibliothèque Flask PostgreSQL à l'aide de PIP:
pip install flask-pgsql --user
Ajouter la bibliothèque de Flask_login de support ✅
from flask_login import UserMixin , LoginManager , ...
class USERS ( UserMixin , db . Model ): ...Utilisez Metaclass car les propriétés de classe sont obsolètes dans Python 3.11 et ne seront pas prises en charge dans 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 ): ...Faites quelque chose comme ça.
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 ()remplacer par
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] Pour initialiser la connexion PostgreSQL, importez la classe PostgreSQL de flask_postgresql et fournissez les paramètres de connexion nécessaires:
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 ) Définissez vos modèles de base de données en sous-classé db.Model . Voici un exemple de définition BLOGS et de modèles 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 } )" Création de tables de base de données à l'aide de la méthode create_all() :
db . create_all ()
# or you can recreate any special table
# USERS.create()
# BLOGS.create() Vous pouvez interroger les données à l'aide de l'attribut query de vos modèles:
users = USERS . query . all ()
user = USERS . query . get ( id = 12 ) Vous pouvez ajouter des données à la base de données à l'aide de la méthode add() :
new_user = USERS ( username = "example_user" )
db . session . add ( new_user )
db . session . commit () Vous pouvez supprimer les données de la base de données à l'aide de la méthode delete() :
user_to_delete = USERS . query . get ( id )
user_to_delete . delete ()
db . session . commit ()Bien que la bibliothèque FLASK PostgreSQL soit conçue pour les applications Flask, elle peut également être utilisée dans d'autres cadres ou scripts Python autonomes qui nécessitent une intégration de la base de données PostgreSQL.
Les contributions sont les bienvenues! Si vous trouvez des problèmes ou avez des suggestions d'améliorations, n'hésitez pas à ouvrir un problème ou à soumettre une demande de traction.