Библиотека Flask PostgreSQL предоставляет удобный интерфейс для интеграции баз данных PostgreSQL в приложения Flask. Эта библиотека упрощает взаимодействие с базой данных, предлагая простой в использовании API, похожий на Flask-Sqlalchemy.
Демонстрация: я сделал средний клин, используя как Flask-Sqlalchemy, так и Flask_postgresql с изменением двух трех строк кода. В этой демонстрации я использую библиотеку flask_login, которая также поддерживается моей библиотекой Flask_postgresql.
Вы можете установить Flask Postgresql Library, используя PIP:
pip install flask-pgsql --user
Добавить поддержку Flask_login Library ✅
from flask_login import UserMixin , LoginManager , ...
class USERS ( UserMixin , db . Model ): ...Используйте MetaClass, потому что свойства класса устарели в Python 3.11 и не будут поддерживаться в 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 ): ...Сделай что -то в этом роде.
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 импортируйте класс PostgreSQL из flask_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, ее также можно использовать в других структурах или автономных сценариях Python, которые требуют интеграции базы данных PostgreSQL.
Взносы приветствуются! Если вы найдете какие -либо проблемы или у вас есть предложения по улучшению, не стесняйтесь открывать проблему или отправлять запрос на привлечение.