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.

ภาพด้านล่างแสดงตารางนักเรียนที่สร้างในฐานข้อมูล -