SQLModel، قواعد بيانات SQL في Python، مصممة للبساطة والتوافق والمتانة.
التوثيق : https://sqlmodel.tiangolo.com
كود المصدر : https://github.com/fastapi/sqlmodel
SQLModel هي مكتبة للتفاعل مع قواعد بيانات SQL من كود Python، مع كائنات Python. لقد تم تصميمه ليكون بديهيًا وسهل الاستخدام ومتوافقًا للغاية وقويًا.
يعتمد SQLModel على التعليقات التوضيحية من نوع Python، ويتم تشغيله بواسطة Pydantic وSQLAlchemy.
الميزات الرئيسية هي:
تم تصميم SQLModel لتبسيط التفاعل مع قواعد بيانات SQL في تطبيقات FastAPI، وقد تم إنشاؤه بواسطة نفس المؤلف. ؟
فهو يجمع بين SQLAlchemy وPydantic ويحاول تبسيط التعليمات البرمجية التي تكتبها قدر الإمكان، مما يسمح لك بتقليل تكرار التعليمات البرمجية إلى الحد الأدنى ، ولكن مع الحصول على أفضل تجربة ممكنة للمطورين .
SQLModel هو في الواقع طبقة رقيقة فوق Pydantic و SQLAlchemy ، تم تصميمه بعناية ليكون متوافقًا مع كليهما.
إصدار حديث ومدعوم حاليًا من Python.
نظرًا لأن SQLModel يعتمد على Pydantic و SQLAlchemy ، فهو يتطلبهما. سيتم تثبيتها تلقائيًا عند تثبيت SQLModel.
تأكد من إنشاء بيئة افتراضية، وتنشيطها، ثم تثبيت SQLModel، على سبيل المثال باستخدام:
$ pip install sqlmodel
---> 100%
Successfully installed sqlmodel
للحصول على مقدمة لقواعد البيانات وSQL وكل شيء آخر، راجع وثائق SQLModel.
وهنا مثال سريع.
تخيل أن لديك جدول SQL يسمى hero
مع:
id
name
secret_name
age
وتريد أن تحتوي على هذه البيانات:
بطاقة تعريف | اسم | Secret_name | عمر |
---|---|---|---|
1 | بركة ميتة | الغوص ويلسون | باطل |
2 | الصبي العنكبوت | بيدرو باركيدور | باطل |
3 | رجل صدئ | تومي شارب | 48 |
ثم يمكنك إنشاء نموذج SQLModel مثل هذا:
from typing import Optional
from sqlmodel import Field , SQLModel
class Hero ( SQLModel , table = True ):
id : Optional [ int ] = Field ( default = None , primary_key = True )
name : str
secret_name : str
age : Optional [ int ] = None
هذه الفئة Hero
هي نموذج SQLModel ، أي ما يعادل جدول SQL في كود Python.
وكل من سمات الفئة هذه تعادل كل عمود في الجدول .
ثم يمكنك إنشاء كل صف من الجدول كمثال للنموذج:
hero_1 = Hero ( name = "Deadpond" , secret_name = "Dive Wilson" )
hero_2 = Hero ( name = "Spider-Boy" , secret_name = "Pedro Parqueador" )
hero_3 = Hero ( name = "Rusty-Man" , secret_name = "Tommy Sharp" , age = 48 )
بهذه الطريقة، يمكنك استخدام كود Python التقليدي مع الفئات والمثيلات التي تمثل الجداول والصفوف ، وبهذه الطريقة تتواصل مع قاعدة بيانات SQL .
تم تصميم كل شيء من أجلك لتحصل على أفضل تجربة ممكنة للمطورين، مع أفضل دعم للمحرر.
بما في ذلك الإكمال التلقائي :
والأخطاء المضمنة :
يمكنك معرفة المزيد حول SQLModel من خلال اتباع البرنامج التعليمي بسرعة، ولكن إذا كنت تريد التعرف الآن على كيفية تجميع كل ذلك معًا وحفظه في قاعدة البيانات، فيمكنك القيام بذلك:
from typing import Optional
from sqlmodel import Field , Session , SQLModel , create_engine
class Hero ( SQLModel , table = True ):
id : Optional [ int ] = Field ( default = None , primary_key = True )
name : str
secret_name : str
age : Optional [ int ] = None
hero_1 = Hero ( name = "Deadpond" , secret_name = "Dive Wilson" )
hero_2 = Hero ( name = "Spider-Boy" , secret_name = "Pedro Parqueador" )
hero_3 = Hero ( name = "Rusty-Man" , secret_name = "Tommy Sharp" , age = 48 )
engine = create_engine ( "sqlite:///database.db" )
SQLModel . metadata . create_all ( engine )
with Session ( engine ) as session :
session . add ( hero_1 )
session . add ( hero_2 )
session . add ( hero_3 )
session . commit ()
سيؤدي ذلك إلى حفظ قاعدة بيانات SQLite مع الأبطال الثلاثة.
بعد ذلك يمكنك كتابة استعلامات للاختيار من قاعدة البيانات نفسها، على سبيل المثال باستخدام:
from typing import Optional
from sqlmodel import Field , Session , SQLModel , create_engine , select
class Hero ( SQLModel , table = True ):
id : Optional [ int ] = Field ( default = None , primary_key = True )
name : str
secret_name : str
age : Optional [ int ] = None
engine = create_engine ( "sqlite:///database.db" )
with Session ( engine ) as session :
statement = select ( Hero ). where ( Hero . name == "Spider-Boy" )
hero = session . exec ( statement ). first ()
print ( hero )
تم تصميم SQLModel بعناية ليمنحك أفضل تجربة للمطور ودعم المحرر، حتى بعد تحديد البيانات من قاعدة البيانات:
تلك الفئة Hero
هي نموذج SQLModel .
ولكنه في الوقت نفسه نموذج SQLAlchemy . لذلك، يمكنك دمجها واستخدامها مع نماذج SQLAlchemy الأخرى، أو يمكنك بسهولة ترحيل التطبيقات باستخدام SQLAlchemy إلى SQLModel .
وفي الوقت نفسه، فهو أيضًا نموذج Pydantic . يمكنك استخدام الميراث معه لتحديد جميع نماذج البيانات الخاصة بك مع تجنب تكرار التعليمات البرمجية. وهذا يجعل من السهل جدًا استخدامه مع FastAPI .
هذا المشروع مرخص بموجب شروط ترخيص MIT.