توفر مكتبة Flask PostgreSQL واجهة مريحة لدمج قواعد بيانات PostgreSQL في تطبيقات Flask. تعمل هذه المكتبة على تبسيط تفاعلات قاعدة البيانات من خلال تقديم واجهة برمجة تطبيقات سهلة الاستخدام مماثلة لفلاسك-SQLAlchemy.
العرض التوضيحي: لقد صنعت متوسطًا باستخدام كل من Flask-Sqlalchemy و Flask_postgresql مع تغيير خطين من الكود الثلاثة. في هذا العرض التوضيحي ، أستخدم مكتبة flask_login التي تدعمها أيضًا مكتبة flask_postgresql الخاصة بي.
يمكنك تثبيت مكتبة PostgreSQL Flask باستخدام PIP:
pip install flask-pgsql --user
أضف دعم مكتبة flask_login ✅
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 ، إلا أنه يمكن استخدامها أيضًا في أطر أخرى أو برامج نصية للبيثون المستقلة التي تتطلب تكامل قاعدة بيانات PostgreSQL.
المساهمات مرحب بها! إذا وجدت أي مشكلات أو لديك اقتراحات للتحسينات ، فلا تتردد في فتح مشكلة أو تقديم طلب سحب.