A biblioteca Flask PostgreSQL fornece uma interface conveniente para integrar bancos de dados PostGresql em aplicativos de frasco. Esta biblioteca simplifica as interações do banco de dados, oferecendo uma API fácil de usar semelhante à Flask-SqlalChemy.
Demo: Fiz MediumClone usando o Flask-Sqlalchemy e o Flask_PostGresql com alteração de duas três linhas de código. Nesta demonstração, uso a biblioteca Flask_Login, que também é suportada pela minha biblioteca Flask_PostGresql.
Você pode instalar a biblioteca Flask PostGresql usando PIP:
pip install flask-pgsql --user
Adicionar suporte Flask_login Library ✅
from flask_login import UserMixin , LoginManager , ...
class USERS ( UserMixin , db . Model ): ...Use o metaclasse porque as propriedades da classe são descontinuadas no Python 3.11 e não serão suportadas no 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 ): ...Faça algo assim.
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 ()substitua -o 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 a conexão PostGresql, importe a classe PostgreSQL do flask_postgresql e forneça os parâmetros de conexão necessários:
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 seus modelos de banco de dados subclassendo db.Model . Aqui está um exemplo de definição de BLOGS e 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 } )" Crie tabelas de banco de dados usando o método create_all() :
db . create_all ()
# or you can recreate any special table
# USERS.create()
# BLOGS.create() Você pode consultar dados usando o atributo query de seus modelos:
users = USERS . query . all ()
user = USERS . query . get ( id = 12 ) Você pode adicionar dados ao banco de dados usando o método add() :
new_user = USERS ( username = "example_user" )
db . session . add ( new_user )
db . session . commit () Você pode excluir dados do banco de dados usando o método delete() :
user_to_delete = USERS . query . get ( id )
user_to_delete . delete ()
db . session . commit ()Enquanto a biblioteca Postgresql Flask foi projetada para aplicativos de frasco, ela também pode ser usada em outras estruturas ou scripts de Python independentes que requerem integração do banco de dados PostGresql.
As contribuições são bem -vindas! Se você encontrar algum problema ou tiver sugestões de melhorias, sinta -se à vontade para abrir um problema ou enviar uma solicitação de tração.