0Pricing
Learn AI with Python · บทเรียน

การผสาน Pandas และ SQL

pd.read_sql(), df.to_sql(), กลไก SQLAlchemy และการสืบค้นผลลัพธ์ฐานข้อมูลเข้าสู่ DataFrames โดยตรง

การผสาน Pandas และ SQL เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

Pandas พบกับ SQL

คุณไม่จำเป็นต้องเลือกระหว่าง SQL กับ pandas เพราะทั้งสองอย่างทำงานร่วมกันได้ คุณสามารถสืบค้นฐานข้อมูลเป็น DataFrame แปลงข้อมูลด้วย pandas และเขียนผลลัพธ์กลับไปได้

ตัวเชื่อมคือ SQLAlchemy ร่วมกับฟังก์ชันของ pandas อย่าง read_sql และ to_sql

ทำไมต้องใช้ SQLAlchemy

pandas สื่อสารกับฐานข้อมูลผ่านการเชื่อมต่อหรือกลไกของ SQLAlchemy กลไกนี้ซ่อนรายละเอียดของชนิดฐานข้อมูลไว้ ทำให้โค้ดเดียวกันทำงานกับ SQLite, PostgreSQL, MySQL และฐานข้อมูลอื่น ๆ ได้ เพียงเปลี่ยน URL

การสร้างกลไก

create_engine รับ URL การเชื่อมต่อ ส่วนรูปแบบของ URL จะระบุไดรเวอร์ฐานข้อมูล

from sqlalchemy import create_engine

engine = create_engine("sqlite:///ml.db")
# Postgres: create_engine("postgresql://user:pass@host:5432/db")

การอ่านตารางด้วย pd.read_sql

pd.read_sql เรียกใช้การสืบค้นหรืออ่านตาราง แล้วส่งคืน DataFrame ให้ส่งสตริง SQL และกลไกเข้าไป

import pandas as pd

df = pd.read_sql("SELECT * FROM experiments", engine)
print(df.head())

การอ่านด้วยการสืบค้นที่กรองแล้ว

ให้ฐานข้อมูลจัดการการกรองและการรวมข้อมูล จากนั้นจึงส่งผลลัพธ์ที่มีขนาดเล็กกว่าให้ pandas วิธีนี้มีประสิทธิภาพมากกว่าการโหลดข้อมูลทั้งหมด

df = pd.read_sql(
    "SELECT name, accuracy FROM experiments WHERE accuracy > 0.85 ORDER BY accuracy DESC",
    engine,
)
print(df)

การสืบค้นแบบใช้พารามิเตอร์

ส่งพารามิเตอร์การสืบค้นอย่างปลอดภัยด้วยอาร์กิวเมนต์ params แทนการจัดรูปแบบสตริง

from sqlalchemy import text

df = pd.read_sql(
    text("SELECT * FROM experiments WHERE name = :n"),
    engine,
    params={"n": "xgb"},
)

การเขียน DataFrame ด้วย df.to_sql

df.to_sql(table, engine) จะเขียน DataFrame ลงในตารางฐานข้อมูล และสร้างตารางจากชนิดข้อมูลของ DataFrame หากจำเป็น

df.to_sql("results", engine, index=False)

พารามิเตอร์ดัชนี

โดยค่าเริ่มต้น to_sql จะเขียนดัชนีของ DataFrame เป็นคอลัมน์หนึ่ง โดยทั่วไปคุณไม่ต้องการเช่นนั้น ให้ส่ง index=False เพื่อข้ามดัชนี

df.to_sql("results", engine, index=False)   # no extra index column

พารามิเตอร์ if_exists

if_exists ควบคุมการทำงานเมื่อมีตารางอยู่แล้ว:

  • "fail" — แสดงข้อผิดพลาด (ค่าเริ่มต้น)
  • "replace" — ลบแล้วสร้างตารางขึ้นใหม่
  • "append" — เพิ่มแถวลงในตารางเดิม
df.to_sql("results", engine, if_exists="append", index=False)
# Use "replace" to overwrite, "fail" to be safe

กระบวนการทำงานแบบไปกลับ

กระบวนการทั่วไปคือ อ่านข้อมูลดิบจาก SQL แปลงข้อมูลใน pandas แล้วเขียนผลลัพธ์ที่ทำความสะอาดแล้วกลับไปยังตารางใหม่

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("sqlite:///ml.db")
raw = pd.read_sql("SELECT * FROM experiments", engine)
raw["accuracy_pct"] = (raw["accuracy"] * 100).round(1)
raw.to_sql("experiments_clean", engine, if_exists="replace", index=False)

การอ่านเป็นกลุ่มสำหรับตารางขนาดใหญ่

สำหรับตารางที่มีขนาดใหญ่เกินกว่าจะเก็บไว้ในหน่วยความจำ ให้ส่ง chunksize ไปยัง read_sql เพื่อวนซ้ำอ่านผลลัพธ์เป็นชุด ๆ

for chunk in pd.read_sql("SELECT * FROM big_table", engine, chunksize=10000):
    process(chunk)   # handle 10k rows at a time

ตรวจสอบอย่างรวดเร็ว: การเพิ่มแถว

คุณต้องการให้ to_sql เพิ่มแถวใหม่ลงในตารางเดิมโดยไม่ลบตารางนั้น

ทบทวน: pandas และ SQL

ขณะนี้คุณสามารถย้ายข้อมูลระหว่าง pandas กับฐานข้อมูลได้แล้ว:

  • create_engine(url) สำหรับการเชื่อมต่อที่ไม่ขึ้นกับชนิดฐานข้อมูล
  • pd.read_sql(query, engine) เพื่อโหลดผลลัพธ์การสืบค้นลงใน DataFrame
  • df.to_sql(table, engine, index=False, if_exists=...) เพื่อเขียนข้อมูลกลับ
  • การสืบค้นแบบใช้พารามิเตอร์และ chunksize เพื่อความปลอดภัยและการรองรับข้อมูลขนาดใหญ่

ถัดไป: จัดเก็บและสืบค้นผลการทดลองของการเรียนรู้ของเครื่อง

คำถามที่พบบ่อย

บทเรียน “การผสาน Pandas และ SQL” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การผสาน Pandas และ SQL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การผสาน Pandas และ SQL”

pd.read_sql(), df.to_sql(), กลไก SQLAlchemy และการสืบค้นผลลัพธ์ฐานข้อมูลเข้าสู่ DataFrames โดยตรง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การผสาน Pandas และ SQL” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. SQLite ด้วยโมดูล sqlite3 ของ Python
  2. การผสาน Pandas และ SQL
  3. การจัดเก็บและสืบค้นผลลัพธ์แมชชีนเลิร์นนิง
  4. บทนำสู่ฐานข้อมูลเวกเตอร์
← กลับไปที่ Learn AI with Python