SQLAlchemy
ชุดเครื่องมือ Python SQL และ Object Relational Mapper
การแนะนำ
SQLAlchemy เป็นชุดเครื่องมือ Python SQL และ Object Relational Mapper ที่ให้นักพัฒนาแอปพลิเคชันได้รับพลังและความยืดหยุ่นของ SQL อย่างเต็มที่ SQLAlchemy มอบชุดรูปแบบการคงอยู่ระดับองค์กรที่รู้จักกันดีเต็มรูปแบบ ซึ่งออกแบบมาเพื่อการเข้าถึงฐานข้อมูลที่มีประสิทธิภาพและมีประสิทธิภาพสูง โดยปรับเป็นภาษาโดเมนแบบ Pythonic ที่เรียบง่าย
คุณสมบัติที่สำคัญของ SQLAlchemy ได้แก่:
- ORM ที่แข็งแกร่งทางอุตสาหกรรม สร้างขึ้นจากแกนกลางบนแผนที่ข้อมูลประจำตัว หน่วยการทำงาน และรูปแบบตัวทำแผนที่ข้อมูล รูปแบบเหล่านี้ช่วยให้วัตถุคงอยู่อย่างโปร่งใสโดยใช้ระบบการกำหนดค่าที่ประกาศ โมเดลโดเมนสามารถสร้างและจัดการได้ตามธรรมชาติ และการเปลี่ยนแปลงจะถูกซิงโครไนซ์กับธุรกรรมปัจจุบันโดยอัตโนมัติ
- ระบบคิวรีเชิงสัมพันธ์ซึ่งเปิดเผยขีดความสามารถของ SQL อย่างเต็มรูปแบบอย่างชัดเจน รวมถึงการรวม คิวรีย่อย ความสัมพันธ์ และทุกสิ่งทุกอย่างส่วนใหญ่ในแง่ของโมเดลออบเจ็กต์ การเขียนคิวรีด้วย ORM จะใช้เทคนิคการจัดองค์ประกอบเชิงสัมพันธ์แบบเดียวกับที่คุณใช้เมื่อเขียน SQL แม้ว่าคุณจะสามารถดรอปลงใน SQL ตามตัวอักษรได้ตลอดเวลา แต่ก็แทบไม่จำเป็นเลย
- ระบบที่ครอบคลุมและยืดหยุ่นในการโหลดคอลเลกชันและวัตถุที่เกี่ยวข้องอย่างกระตือรือร้น คอลเลกชันจะถูกแคชไว้ภายในเซสชัน และสามารถโหลดได้ในการเข้าถึงแต่ละครั้ง ทั้งหมดในครั้งเดียวโดยใช้การรวม หรือโดยการสืบค้นต่อคอลเลกชันในชุดผลลัพธ์ทั้งหมด
- ระบบการสร้าง Core SQL และเลเยอร์การโต้ตอบ DBAPI SQLAlchemy Core แยกจาก ORM และเป็นเลเยอร์นามธรรมของฐานข้อมูลเต็มรูปแบบในสิทธิ์ของตัวเอง และรวมถึงภาษานิพจน์ SQL ที่ใช้ Python ที่ขยายได้ เมตาดาต้าสคีมา การรวมการเชื่อมต่อ การบังคับพิมพ์ และประเภทที่กำหนดเอง
- ข้อจำกัดคีย์หลักและคีย์นอกทั้งหมดจะถือว่าเป็นแบบผสมและเป็นธรรมชาติ แน่นอนว่าคีย์หลักตัวแทนจำนวนเต็มนั้นยังคงเป็นบรรทัดฐาน แต่ SQLAlchemy ไม่เคยถือว่าหรือฮาร์ดโค้ดกับโมเดลนี้
- วิปัสสนาฐานข้อมูลและการสร้าง สกีมาฐานข้อมูลสามารถ "สะท้อน" ได้ในขั้นตอนเดียวในโครงสร้าง Python ที่แสดงถึงข้อมูลเมตาของฐานข้อมูล โครงสร้างเดียวกันเหล่านั้นสามารถสร้างคำสั่ง CREATE ได้ทันที - ทั้งหมดอยู่ภายในแกนกลาง โดยไม่ขึ้นอยู่กับ ORM
ปรัชญาของ SQLAlchemy:
- ฐานข้อมูล SQL มีลักษณะการทำงานเหมือนคอลเลกชันอ็อบเจ็กต์น้อยลงเรื่อยๆ เมื่อขนาดและประสิทธิภาพเริ่มมีความสำคัญมากขึ้น คอลเลกชั่นออบเจ็กต์จะมีพฤติกรรมเหมือนตารางและแถวน้อยลงเรื่อยๆ ยิ่งสิ่งที่เป็นนามธรรมเริ่มมีความสำคัญมากขึ้น SQLAlchemy มีเป้าหมายเพื่อรองรับหลักการทั้งสองนี้
- ORM ไม่จำเป็นต้องซ่อน "R" ฐานข้อมูลเชิงสัมพันธ์มีฟังก์ชันการทำงานตามการตั้งค่าที่หลากหลายซึ่งควรจะเปิดเผยอย่างเต็มที่ ORM ของ SQLAlchemy มอบชุดรูปแบบปลายเปิดที่ช่วยให้นักพัฒนาสามารถสร้างเลเยอร์สื่อกลางแบบกำหนดเองระหว่างโมเดลโดเมนและสคีมาเชิงสัมพันธ์ โดยเปลี่ยนปัญหาที่เรียกว่า "ความต้านทานเชิงสัมพันธ์ของวัตถุ" ให้เป็นหน่วยความจำระยะไกล
- ในทุกกรณี นักพัฒนาจะทำการตัดสินใจทั้งหมดเกี่ยวกับการออกแบบ โครงสร้าง และการตั้งชื่อแบบแผนของทั้งโมเดลออบเจ็กต์และสคีมาเชิงสัมพันธ์ SQLAlchemy จัดเตรียมวิธีการในการดำเนินการตัดสินใจเหล่านี้โดยอัตโนมัติเท่านั้น
- ด้วย SQLAlchemy ไม่มีสิ่งที่เรียกว่า "ORM สร้างแบบสอบถามที่ไม่ถูกต้อง" - คุณสามารถควบคุมโครงสร้างของแบบสอบถามได้อย่างสมบูรณ์ รวมถึงวิธีจัดระเบียบการรวม วิธีใช้แบบสอบถามย่อยและความสัมพันธ์ คอลัมน์ใดที่ถูกร้องขอ ทุกสิ่งที่ SQLAlchemy ทำนั้นท้ายที่สุดแล้วเป็นผลมาจากการตัดสินใจที่ริเริ่มโดยนักพัฒนา
- อย่าใช้ ORM หากไม่จำเป็นต้องใช้ปัญหา SQLAlchemy ประกอบด้วยคอร์และส่วนประกอบ ORM ที่แยกจากกัน Core นำเสนอภาษานิพจน์ SQL เต็มรูปแบบที่ช่วยให้สามารถสร้าง Pythonic ของโครงสร้าง SQL ที่แสดงผลโดยตรงไปยังสตริง SQL สำหรับฐานข้อมูลเป้าหมาย โดยส่งคืนชุดผลลัพธ์ที่เป็นเคอร์เซอร์ DBAPI ที่ได้รับการปรับปรุงเป็นหลัก
- การทำธุรกรรมควรเป็นบรรทัดฐาน ด้วย ORM ของ SQLAlchemy จะไม่มีอะไรไปที่พื้นที่เก็บข้อมูลถาวรจนกว่าจะมีการเรียก commit() SQLAlchemy สนับสนุนให้แอปพลิเคชันสร้างวิธีการที่สอดคล้องกันในการกำหนดจุดเริ่มต้นและจุดสิ้นสุดของชุดการดำเนินการ
- อย่าแสดงค่าตัวอักษรในคำสั่ง SQL พารามิเตอร์ที่ถูกผูกไว้จะถูกใช้ในระดับสูงสุดเท่าที่จะเป็นไปได้ ช่วยให้เครื่องมือเพิ่มประสิทธิภาพคิวรีสามารถแคชแผนการสืบค้นได้อย่างมีประสิทธิภาพ และทำให้การโจมตีแบบแทรก SQL ไม่ใช่ปัญหา
เอกสารประกอบ
เอกสารล่าสุดอยู่ที่:
https://www.sqlalchemy.org/docs/
การติดตั้ง/ข้อกำหนด
เอกสารฉบับเต็มสำหรับการติดตั้งอยู่ที่การติดตั้ง
การขอความช่วยเหลือ / การพัฒนา / การรายงานข้อผิดพลาด
โปรดดูคู่มือชุมชน SQLAlchemy
หลักจรรยาบรรณ
เหนือสิ่งอื่นใด SQLAlchemy ให้ความสำคัญกับการสื่อสารที่สุภาพ รอบคอบ และสร้างสรรค์ระหว่างผู้ใช้และนักพัฒนา โปรดดูจรรยาบรรณปัจจุบันของเราที่จรรยาบรรณ
ใบอนุญาต
SQLAlchemy ได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT