นี่คือตัวอย่างของประโยชน์ของขวด - sqlalchemy ให้คุณมากกว่า sqlalchemy ธรรมดา
สมมติว่าคุณกำลังใช้ flask_user
flask_user สร้างและพิสูจน์ตัวตนของออบเจ็กต์ผู้ใช้โดยอัตโนมัติดังนั้นจึงจำเป็นต้องเข้าถึงฐานข้อมูลของคุณ UserManager คลาสทำสิ่งนี้โดยเรียกผ่านไปยังสิ่งที่เรียกว่า "อะแดปเตอร์" ซึ่งเป็นนามธรรมการเรียกฐานข้อมูล คุณจัดเตรียมอะแด็ปเตอร์ในตัวสร้าง UserManager และอะแด็ปเตอร์ต้องใช้ฟังก์ชันเหล่านี้:
class MyAdapter(DBAdapter):
def get_object(self, ObjectClass, id):
""" Retrieve one object specified by the primary key 'pk' """
pass
def find_all_objects(self, ObjectClass, **kwargs):
""" Retrieve all objects matching the case sensitive filters in 'kwargs'. """
pass
def find_first_object(self, ObjectClass, **kwargs):
""" Retrieve the first object matching the case sensitive filters in 'kwargs'. """
pass
def ifind_first_object(self, ObjectClass, **kwargs):
""" Retrieve the first object matching the case insensitive filters in 'kwargs'. """
pass
def add_object(self, ObjectClass, **kwargs):
""" Add an object of class 'ObjectClass' with fields and values specified in '**kwargs'. """
pass
def update_object(self, object, **kwargs):
""" Update object 'object' with the fields and values specified in '**kwargs'. """
pass
def delete_object(self, object):
""" Delete object 'object'. """
pass
def commit(self):
pass
หากคุณใช้ flask-sqlalchemy คุณสามารถใช้ SQLAlchemyAdapter ในตัว หากคุณใช้ sqlalchemy (ไม่ใช่ขวด - sqlalchemy) คุณอาจตั้งสมมติฐานที่แตกต่างกันเกี่ยวกับวิธีการบันทึกวัตถุลงในฐานข้อมูล (เช่นชื่อของตาราง) ดังนั้นคุณจะต้องเขียนคลาสอะแดปเตอร์ของคุณเอง
flask-sqlalchemy
มีความเก่าแก่กว่าธรรมดาsqlalchemy
ในแอปพลิเคขวด?