La biblioteca Flask PostgreSQL proporciona una interfaz conveniente para integrar bases de datos PostgreSQL en aplicaciones Flask. Esta biblioteca simplifica las interacciones de la base de datos al ofrecer una API fácil de usar similar a Flask-Sqlalchemy.
Demo: Hice medios con clonos usando tanto frasco-sqlalchemy como frast_postgresql con un cambio de dos tres líneas de código. En esta demostración, uso la biblioteca Flask_Login, que también es compatible con mi biblioteca Flask_PostGresql.
Puede instalar la biblioteca Flask PostgreSQL usando PIP:
pip install flask-pgsql --user
Agregar soporte Flask_login Library ✅
from flask_login import UserMixin , LoginManager , ...
class USERS ( UserMixin , db . Model ): ...Use metaclase porque las propiedades de la clase están en desuso en Python 3.11 y no serán compatibles con 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 ): ...Haz algo así.
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 ()reemplazarlo por
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] Para inicializar la conexión PostgreSQL, importe la clase PostgreSQL desde flask_postgresql y proporcione los parámetros de conexión necesarios:
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 ) Defina sus modelos de base de datos subclasificando db.Model . Aquí hay un ejemplo de definición de BLOGS y modelos 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 } )" Crear tablas de base de datos utilizando el método create_all() :
db . create_all ()
# or you can recreate any special table
# USERS.create()
# BLOGS.create() Puede consultar datos utilizando el atributo query de sus modelos:
users = USERS . query . all ()
user = USERS . query . get ( id = 12 ) Puede agregar datos a la base de datos utilizando el método add() :
new_user = USERS ( username = "example_user" )
db . session . add ( new_user )
db . session . commit () Puede eliminar datos de la base de datos utilizando el método delete() :
user_to_delete = USERS . query . get ( id )
user_to_delete . delete ()
db . session . commit ()Si bien la biblioteca Flask PostgreSQL está diseñada para aplicaciones de frasco, también se puede usar en otros marcos o scripts de Python independientes que requieren integración de la base de datos PostgreSQL.
¡Las contribuciones son bienvenidas! Si encuentra algún problema o tiene sugerencias de mejoras, no dude en abrir un problema o enviar una solicitud de extracción.