SQLAlchemy Core - การสร้างตาราง
ตอนนี้ให้เราพูดถึงวิธีการใช้ฟังก์ชันสร้างตาราง
SQL Expression Language สร้างนิพจน์เทียบกับคอลัมน์ของตาราง SQLAlchemy Column object แทนไฟล์column ในตารางฐานข้อมูลซึ่งแทนด้วยไฟล์ Tableobject. ข้อมูลเมตาประกอบด้วยคำจำกัดความของตารางและวัตถุที่เกี่ยวข้องเช่นดัชนีมุมมองทริกเกอร์ ฯลฯ
ดังนั้นอ็อบเจ็กต์ของคลาส MetaData จาก SQLAlchemy Metadata คือคอลเล็กชันของวัตถุ Table และโครงสร้าง schema ที่เกี่ยวข้อง มันมีคอลเลกชันของวัตถุตารางเช่นเดียวกับการผูกทางเลือกกับเครื่องยนต์หรือการเชื่อมต่อ
from sqlalchemy import MetaData
meta = MetaData()
Constructor ของคลาส MetaData สามารถมีพารามิเตอร์ bind และ schema ซึ่งเป็นค่าดีฟอลต์ None.
ต่อไปเราจะกำหนดตารางของเราทั้งหมดภายในแคตตาล็อกข้อมูลเมตาข้างต้นโดยใช้ the Table constructซึ่งคล้ายกับคำสั่ง SQL CREATE TABLE ปกติ
ออบเจ็กต์ของคลาส Table แสดงถึงตารางที่สอดคล้องกันในฐานข้อมูล ตัวสร้างรับพารามิเตอร์ต่อไปนี้ -
ชื่อ | ชื่อของตาราง |
---|---|
ข้อมูลเมตา | วัตถุ MetaData ที่จะเก็บตารางนี้ |
คอลัมน์ | ออบเจ็กต์อย่างน้อยหนึ่งรายการของคลาสคอลัมน์ |
วัตถุคอลัมน์แสดงถึงไฟล์ column ใน database table. ตัวสร้างใช้ชื่อประเภทและพารามิเตอร์อื่น ๆ เช่น primary_key การสร้างอัตโนมัติและข้อ จำกัด อื่น ๆ
SQLAlchemy จับคู่ข้อมูล Python กับประเภทข้อมูลคอลัมน์ทั่วไปที่ดีที่สุดที่กำหนดไว้ในนั้น ประเภทข้อมูลทั่วไปบางประเภท ได้แก่ -
- BigInteger
- Boolean
- Date
- DateTime
- Float
- Integer
- Numeric
- SmallInteger
- String
- Text
- Time
เพื่อสร้างไฟล์ students table ในฐานข้อมูลของวิทยาลัยใช้ตัวอย่างต่อไปนี้ -
from sqlalchemy import Table, Column, Integer, String, MetaData
meta = MetaData()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
ฟังก์ชัน create_all () ใช้เอนจินอ็อบเจ็กต์เพื่อสร้างอ็อบเจ็กต์ตารางที่กำหนดทั้งหมดและเก็บข้อมูลไว้ในเมทาดาทา
meta.create_all(engine)
รหัสที่สมบูรณ์จะได้รับด้านล่างซึ่งจะสร้างฐานข้อมูล SQLite college.db โดยมีตารางนักเรียนอยู่
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
meta.create_all(engine)
เนื่องจากคุณสมบัติ echo ของฟังก์ชัน create_engine () ถูกตั้งค่าเป็น Trueคอนโซลจะแสดงแบบสอบถาม SQL จริงสำหรับการสร้างตารางดังนี้ -
CREATE TABLE students (
id INTEGER NOT NULL,
name VARCHAR,
lastname VARCHAR,
PRIMARY KEY (id)
)
college.db จะถูกสร้างขึ้นในไดเร็กทอรีการทำงานปัจจุบัน หากต้องการตรวจสอบว่ามีการสร้างตารางนักเรียนหรือไม่คุณสามารถเปิดฐานข้อมูลโดยใช้เครื่องมือ SQLite GUI เช่นSQLiteStudio.
ภาพด้านล่างแสดงตารางนักเรียนที่สร้างในฐานข้อมูล -