# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# ## <i>Import libraries</i>

import pandas as pd
import mysql.connector as mysql

# ## Sambungkan ke MySQL

koneksi = mysql.connect(host = "localhost",
                        database = "kampus",
                        user = "root",
                        password = "<PASSWORD>")

# ## Ambil tabel jurusan

# +
cursor = koneksi.cursor()

# yang di eksekusi adalah query sql'nya
cursor.execute("SELECT * FROM jurusan")

tabel_jurusan = cursor.fetchall()
tabel_jurusan
# -

# ## Ubah ke dalam DataFrame

# +
data_jurusan  = pd.DataFrame(columns = ["ID", "Nama Jurusan"],
                            data = tabel_jurusan)

# Ubah kolom indeks
data_jurusan = data_jurusan.set_index('ID')
data_jurusan
# -

data_jurusan['Nama Jurusan'] = data_jurusan['Nama Jurusan'].str.capitalize()
data_jurusan

# ## Lihat data tabel mahasiswa

# +
# yang di eksekusi adalah query sql'nya
cursor.execute("SELECT * FROM mahasiswa")

tabel_mahasiswa = cursor.fetchall()
tabel_mahasiswa
# -

tabel_mahasiswa[0][2]

# ## Ubah ke dalam DataFrame

# +
data_mahasiswa  = pd.DataFrame(columns = ["ID MHS",
                                          "ID Jurusan",
                                          "Nama",
                                          "Tanggal lahir",
                                          "No Tel",
                                          "alamat"],
                               data = tabel_mahasiswa)

# Ubah kolom indeks
data_mahasiswa = data_mahasiswa.set_index('ID MHS')
data_mahasiswa
# -

data_mahasiswa['ID Jurusan'].value_counts().plot(kind='pie')

# ## Buat <i>TABLE</i> baru

cursor.execute("CREATE TABLE mhs_baru "+
              "(id_mhs_baru INT(11) NOT NULL, "+
              "nama_jurusan VARCHAR(30) NOT NULL, "
              "nama_mhs VARCHAR(50) NOT NULL, " +
              "tanggal_lahir VARCHAR(30) NOT NULL)")

# ## JOIN TABLE

# +
cursor.execute("SELECT mahasiswa.id_mhs, jurusan.nama_jurusan, mahasiswa.nama_mhs, mahasiswa.tgl_lahir "+
              "FROM mahasiswa INNER JOIN jurusan on jurusan.id_jurusan = mahasiswa.id_jurusan "+
              "ORDER BY mahasiswa.id_mhs")

tabel_baru = cursor.fetchall()
tabel_baru
# -

# ## Masukan data hasil JOIN'an ke TABLE baru

for baris in tabel_baru:
    sql_query = "INSERT INTO mhs_baru VALUES (%s, %s, %s, %s)"
    cursor.execute(sql_query, baris)
    print(baris, "Telah dimasukkan")
    koneksi.commit()

# ## Lihat isi TABLE baru dalam bentuk DataFrame

# +
cursor.execute("SELECT * FROM mhs_baru")

mhs_baru = cursor.fetchall()

data_mhs_baru = pd.DataFrame(columns = ["ID", "Nama Jurusan", "Nama", "Tanggal Lahir"],
                            data = mhs_baru)

data_mhs_baru = data_mhs_baru.set_index("ID")
data_mhs_baru
# -

data_mhs_baru['Nama Jurusan'].value_counts().plot(kind='barh')



StarcoderdataJupyterScriptsDedupFiltered