Lewati ke konten utama

Tutorial MySQL di Python: Mulai dari Dasar

Dalam tutorial ini, Anda akan mempelajari cara memasang MySQL, membuat basis data, dan membuat tabel, beserta hal-hal lainnya.
Diperbarui 28 Sep 2026  · 13 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

MySQL adalah sistem manajemen basis data relasional (RDBMS) yang mengadopsi model klien-server. Artinya, komputer ("klien") yang ingin mengakses data harus terhubung ke server RDBMS untuk melakukannya. 

Python, di sisi lain, adalah bahasa pemrograman tingkat tinggi yang populer dan serbaguna. Pengembang sering menggunakannya untuk membangun situs web dan perangkat lunak, mengotomatiskan tugas, serta menganalisis data. Python juga dapat digunakan dengan berbagai basis data, termasuk MySQL. Python mendukung pernyataan kueri data, bahasa definisi data, dan manipulasi data. Tutorial ini akan menunjukkan cara bekerja dengan MySQL di Python. 

Memulai dengan MySQL di Python

Untuk menggunakan MySQL di Python dari Workspace DataCamp, Anda harus menggunakan integrasi workspace untuk terhubung ke basis data terkelola yang sudah ada. Kita akan membangun basis data dari nol, jadi kita tidak akan menggunakan Workspace DataCamp untuk tutorial ini. 

Berikut dua langkah yang harus Anda lakukan untuk mengikuti tutorial ini: 

  1. Pasang server MySQL untuk menyediakan layanan yang diperlukan dalam mengelola basis data. Anda dapat mengunduh dan memasangnya dari situs web MySQL. 
  2. Pasang MySQL connector yaitu driver Python yang membantu Anda mengintegrasikan aplikasi Python dengan basis data MySQL; ini dapat dipasang dengan mudah menggunakan pip (manajer paket Python).

Setelah Anda memasang server MySQL: 

  1. Klon repositori GitHub ini ke mesin lokal Anda – cara mengklon repositori di GitHub.
  2. Buat dan aktifkan environment virtual – pembuatan environment virtual. 
  3. Pasang paket yang diperlukan menggunakan pip install -r requirements dari terminal.  
  4. Buat berkas .env di direktori root.
    1. Simpan kata sandi untuk mengautentikasi pengguna Anda dengan server MySQL dalam variabel bernama PASSWORD – Jika Anda tidak menetapkan kata sandi root, maka server tidak memerlukan kata sandi.  

Penafian

Setiap berkas di repositori diawali dengan angka untuk menunjukkan urutannya dalam tutorial ini.

Sebagai contoh,  04_data_insertion.py menunjukkan bahwa modul tersebut harus dijalankan ke-4 (setelah modul 01 - 03). Anda juga dapat menjalankan seluruh kode dengan menjalankan 00_execute_all.py.

Membuat koneksi

MySQL mengikuti model server-klien; setiap kali klien ingin mengakses data, ia harus terhubung ke RDBMS. 

Cara membuat koneksi dengan server adalah menggunakan metode connect() dari modul mysql.connector…

import os

from mysql import connector
from dotenv import load_dotenv


load_dotenv()
PASSWORD = os.getenv("PASSWORD")

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD
    ) as database:
        print(database)
except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x00000188FA653970>
"""

Lihat cakupan lengkap argumen untuk metode connect() di dokumentasi. 

Ada tiga hal yang perlu diperhatikan dari kode ini: 

  1. Penanganan Exception dan Error: Praktik yang baik untuk menangani error saat membuat koneksi ke server MySQL. 
  2. Tutup koneksi: Kita menggunakan context manager, jadi kita tidak menutup koneksi secara eksplisit menggunakan metode close(). Secara umum, koneksi harus ditutup setelah Anda selesai mengakses basis data untuk mencegah terjadinya error yang tidak terduga. 
  3. Data sensitif: Gunakan variabel lingkungan untuk menyembunyikan informasi sensitif, karena membagikannya menimbulkan risiko keamanan. 

Sekarang Anda telah membuat koneksi antara program Python dan server MySQL, Anda siap terhubung ke salah satu dari banyak basis data yang mungkin tersedia di server. Saat ini, kita belum punya apa pun; artinya kita harus membuat basis data baru di dalam server. Mari lihat cara melakukannya di bagian berikutnya. 

Catatan: Setiap kali basis data diakses, koneksi dengan server harus dibuat. Pada contoh kode berikutnya, kami akan menghapus bagian ini dari kode untuk mencegah pengulangan di seluruh tutorial. Namun, kode lengkapnya tetap disertakan di codebase.

Membuat basis data baru di MySQL dengan Python

Mulai dari sini, Anda memerlukan keterampilan SQL; kursus Introduction to SQL dari DataCamp adalah titik awal yang baik agar Anda siap. 

Cara umum untuk membuat basis data di MySQL adalah sebagai berikut: 

CREATE DATABASE book_ratings;

Untuk menjalankan kueri yang sama di Python, Anda harus membuat instance objek cursor(). 

Dari objek cursor(), Anda dapat mengirim perintah SQL sebagai string ke metode execute(), yang akan mengeksekusi kode tersebut. 

Mari buat basis data bernama "book_ratings…"

create_db = "CREATE DATABASE book_ratings"
with database.cursor() as cursor:
    cursor.execute(create_db)

Catatan: Menjalankan kode ini berkali-kali akan memunculkan error untuk memberi tahu Anda bahwa basis data sudah ada.

Anda dapat memeriksa basis data yang ada di server sebagai berikut:

show_existing_db = "SHOW DATABASES"

with database.cursor() as cursor: 
    cursor.execute(show_existing_db)
    for db in cursor:
        print(db)

"""
('book_ratings',)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)
"""

Kode di atas menampilkan nama semua basis data yang saat ini ada di server MySQL kita. Ada lebih dari satu karena server MySQL secara otomatis membuat basis data untuk menyediakan akses ke berbagai metadata basis data dan pengaturan server.

Menghubungkan ke basis data yang sudah ada

Misalkan Anda sudah membuat basis data, tetapi Anda belum terhubung ke server; bagaimana Anda akan terhubung langsung ke basis data tersebut? 

Mudah. 

Teruskan nama basis data sebagai argumen ke metode connect():

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD,
        database = "book_ratings"
    ) as database:
       
        print(database})

except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x0000016DD8C24970>
"""

Membuat Tabel

Informasi dalam sebuah basis data disimpan di tabel. Tabel hanyalah format yang digunakan untuk menyimpan kumpulan data terkait yang terdiri dari kolom dan baris. 

Mungkin ada beberapa tabel dalam satu basis data, meskipun tidak saling terkait. Anda juga bisa memiliki basis data relasional yang berisi satu tabel saja, seperti yang akan kami demonstrasikan di bagian ini – perluas pengetahuan Anda tentang basis data relasional dengan kursus Introduction to Relational Databases in SQL. 

Pembuatan tabel mengikuti pendekatan yang mirip dengan yang sudah Anda lihat; 

  • Tulis perintah SQL sebagai string 
  • Teruskan ke metode execute() dari objek cursor. 

Pernyataan SQL pada kasus ini adalah CREATE TABLE.

Mari gunakan ini untuk membuat tabel buku:

create_books_table = """
CREATE TABLE books(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    author VARCHAR(100),
    genre VARCHAR(100),
    release_year YEAR(4)
)
"""
# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(create_books_table)
    existing_database.commit()

Pada baris terakhir kode, Anda mungkin melihat kita menggunakan metode commit() pada objek existing_database. Kita harus melakukannya karena perilaku default MySQL Python connector adalah tidak melakukan commit transaksi secara otomatis. 

Setiap kali Anda memodifikasi data untuk sebuah tabel, Anda harus memanggil metode commit() – pelajari lebih lanjut tentang metode commit() di dokumen MySQL. 

Beberapa hal penting lain yang perlu diperhatikan dalam kode antara lain: 

  • NOT NULL: Kendala untuk memastikan kolom tidak menerima nilai NULL. 
  • PRIMARY KEY: Nilai unik yang digunakan untuk mengidentifikasi baris tertentu di tabel. 
  • AUTO_INCREMENT: Secara otomatis menghasilkan angka unik untuk setiap rekaman baru yang dimasukkan ke tabel. 

Kita dapat memeriksa apakah skema kita dibuat dengan benar menggunakan pernyataan DESCRIBE lalu mencetak semua elemennya menggunakan metode fetchall() pada objek cursor kita…

describe_books = "DESCRIBE books"
with existing_database.cursor() as cursor:
    cursor.execute(describe_books)
    books_schema = cursor.fetchall()
    for column in books_schema:
        print(column)

"""
('id', b'int', 'NO', 'PRI', None, 'auto_increment')
('title', b'varchar(100)', 'YES', '', None, '')
('author', b'varchar(100)', 'YES', '', None, '')
('genre', b'varchar(100)', 'YES', '', None, '')
('release_year', b'year', 'YES', '', None, '')
"""

Penyisipan data

Pada bagian sebelumnya, kita membuat tabel bernama books di basis data book_ratings. Saat ini, tabel tersebut kosong. Bagian berikut akan membahas dua pendekatan yang dapat Anda gunakan untuk mengisi tabel. 

Menyisipkan satu rekaman

Mungkin ada kasus ketika Anda harus menyisipkan satu rekaman ke dalam tabel. Meskipun ini jarang terjadi di dunia nyata, tetap memungkinkan untuk melakukannya sebagai berikut:

# INSERT SINGLE RECORD
insert_single_record = "INSERT INTO books (id, title, author, genre, release_year)\
    VALUES (%s, %s, %s, %s, %s)"
single_record = (
    "1", "Choose Yourself! Be Happy, Make Millions, Live the Dream", "James Altucher", "self-help", "2013"
    )

# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(insert_single_record, single_record)
    existing_database.commit()

Menyisipkan banyak rekaman

Cara yang lebih umum untuk menyisipkan data ke tabel adalah dengan metode executemany(operation_to_perform, seq_of_params) dari objek cursor; ini memungkinkan Anda menyisipkan banyak rekaman sekaligus. 

Struktur operasi yang ingin kita lakukan tetap sama; kita hanya memperbarui urutan parameternya. 

Berikut tampilannya dalam kode: 

multiple_records = [
    (
        "2",
        "Skip the Line: The 10,000 Experiments Rule and Other Surprising Advice for Reaching Your Goals",
        "James Altucher",
        "self-help",
        "2021"        
    ),
    (
        "3",
        "The Power of No: Because One Little Word Can Bring Health, Abundance, and Happiness",
        "James Altucher",
        "self-help",
        "2014"
    ),
    ]

with existing_database.cursor() as cursor:
    cursor.executemany(insert_multiple_records, multiple_records)
    existing_database.commit()

Memilih data 

Pernyataan SELECT digunakan untuk mengambil baris yang dipilih dari satu atau lebih tabel dalam basis data. Kita dapat menggunakan SELECT dengan dua cara: 

  1. Memilih kolom tertentu dari sebuah tabel.
select_specific_cols = "SELECT author, release_year FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_specific_cols)
  1. Mengembalikan semua kolom menggunakan tanda bintang "*"
# Create cursor object
select_all_cols = "SELECT * FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_all_cols)

Mengurutkan dan Memfilter data 

Mengurutkan dan memfilter data memungkinkan Anda mengembalikan hasil yang relevan dengan memberikan kriteria spesifik yang harus dipenuhi rekaman. 

Berikut beberapa contohnya: 

WHERE

Pernyataan WHERE memungkinkan Anda memfilter data berdasarkan kondisi tertentu. 

Misalnya, katakanlah kita ingin mengambil nama penulis dan judul buku untuk buku yang dibuat sebelum dan termasuk tahun 2010: 

condition = "SELECT author, title FROM books WHERE release_year <= 2010"
with existing_database.cursor() as cursor:
    cursor.execute(condition)

ORDER BY

Kita juga dapat menggunakan pernyataan ORDER BY untuk mengurutkan hasil dalam urutan menaik (ASC) atau menurun (DESC). Perlu dicatat bahwa mode default selalu urutan menaik kecuali Anda menyatakannya secara eksplisit. 

Berikut cara kita mengurutkan data berdasarkan tahun rilis dalam urutan menurun:

order_by_year = "SELECT * FROM books ORDER BY release_year DESC"
with existing_database.cursor() as cursor:
    cursor.execute(order_by_year)

LIMIT

Pernyataan LIMIT memungkinkan Anda menentukan jumlah rekaman yang dikembalikan dalam himpunan hasil.

# Create cursor object
define_limit = "SELECT * FROM books LIMIT 3"
with existing_database.cursor() as cursor:
    cursor.execute(define_limit)

Kode di atas membatasi jumlah rekaman yang dikembalikan menjadi tiga. 

Memperbarui dan Menghapus data

Ada kalanya data berubah, tidak lagi berguna, atau salah. Di bagian ini, Anda akan mempelajari cara menangani kasus-kasus ini dengan pembaruan dan penghapusan. 

UPDATE

Kueri UPDATE memungkinkan Anda mengubah nilai yang ada di dalam tabel tanpa memengaruhi strukturnya. 

Misalnya, Anda mungkin harus memperbarui sebuah rekaman jika seseorang mengubah namanya; Berikut tampilan kodenya:

update_query = """
UPDATE
    books
SET
    author = "Big J"
WHERE
    author = "James Altucher"
"""
with existing_database.cursor() as cursor:
    cursor.execute(update_query)
    existing_database.commit()

DELETE

Kueri DELETE memungkinkan Anda menghapus rekaman dari tabel:

drop_record = "DELETE FROM books WHERE release_year <= 2000"
with existing_database.cursor() as cursor:
    cursor.execute(drop_record)
    existing_database.commit()

Dalam kode ini, kita menghapus semua rekaman dengan tahun rilis kurang dari atau sama dengan 2000. 

DROP TABLE

Pernyataan DROP TABLE memungkinkan Anda menghapus tabel secara permanen dari basis data. Menambahkan IF EXISTS memungkinkan Anda mengantisipasi skenario ketika Anda tidak yakin apakah tabel yang ingin dihapus ada, namun ini sepenuhnya opsional. 

Mari hapus tabel yang kita buat di basis data book_ratings: 

drop_table = "DROP TABLE IF EXISTS books"
with existing_database.cursor() as cursor:
    cursor.execute(drop_table)
    existing_database.commit()

Kesimpulan

Dalam tutorial ini, Anda telah mempelajari cara membuat koneksi dengan server MySQL di Python, membuat basis data baru, terhubung ke basis data yang sudah ada, membuat tabel, dan melakukan berbagai operasi kueri pada tabel MySQL dari Python.  

Lihat sumber daya berikut untuk melanjutkan pembelajaran Anda:

Topik
SQL
Data Science
Python

Kursus SQL

Kursus

Python Tingkat Menengah

4 jam
1.4M
Tingkatkan keterampilan data science Anda dengan membuat visualisasi menggunakan Matplotlib dan memanipulasi DataFrame dengan pandas.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya