Skip to main content

2. Integrasi model deployment dengan Back-End - Database.html

Pendahuluan

Persiapan

Buat database

Quiz

Referensi

 

Integrasi model deployment dengan Back-End & Database

Pendahuluan

Hai Stupenss! setelah kemarin kita berhasil melakukan deployment pada model yang sudah kita simpan dan juga menggunakan flask untuk menjalankan model pada web app, kali ini kita akan belajar bagaimana cara mengintegrasikan model yang kita buat dengan databse, database disini akan kita gunakan sebagai alat untuk menyimpan log hasil dari proses prediksi image dari model yang kita buat, mari kita pelajari bersama.

Persiapan

Sebelum kita masuk kedalam langkah melakukan integrasi dengan backend dan database ada beberapa persiapan, diantaranya adalah :

  1. Model machine learning
  2. Visual Studio Code
  3. Python 3.9 +
  4. Flask
  5. Virtual Environment
  6. Xampp

Setelah teman teman selesai mempersiapkan beberapa hal di atas selanjutnya mari kita mulai belajar bersama!

Buat database

langkah yang pertama kita lakukan adalah membuat database kita, karena kita sudah memiliki model yang bersama kita buat pada materi sebelumnya yaitu deploying model, jadi kita akan buat databasenya yang pertama teman teman bisa buka xampp teman teman lalu aktifkan apache dan mysql servicenya

Setelah mengaktifkannya teman teman bisa tekan admin pada mysql, untuk membuka panel admin phpmyadmin yang digunakan untuk memanajemen database.

setelah itu teman teman dapat menambahkan database dengan menekan button new pada sidebar.

kemudian berikan nama pada database yang akan dibuat, contohnya disini saya menggunakan nama classification db kemudian klik create. Setelah itu kalian akan diminta untuk membuat tabel, namun kita hiraukan saja karena kita akan membuat tabelnya menggunakan query pada flask kita.

 

Setelah itu teman teman buka projek yang sudah dibuat pada materi sebelumnya, jangan lupa untuk mengaktifkan virtual environment agar flask dapat berjalan.Teman teman dapat mengaktifkan env dengan cara membuka terminal pada vscode kemudian arahkan pada direktori virtual environmentnya lalu jalankan script berikut

<namaenv>\Scripts\activate.bat

 

from datetime import datetime

Kita juga akan menggunakan library datetime, karena kita akan men-generate waktu sebagai datalog yang akan disimpan pada database.

#konfigurasi database

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost:3306/classification_db

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

 

db.init_app(app)

app.app_context()

kita juga menambahkan konfigurasi untuk menghubungkan database kita dengan flask, kita gunakan mysql sebagai databasenya lalu root adalah user, kemudian password, karena kita tidak memakai password pada user root maka kita kosongi saja, lalu diikuti dengan localhost dan port yang digunakan pada mysql, kemudian diikuti nama database yang kita buat tadi yaitu classification_db.

Fungsi db.init_app(app) adalah menginisiasi app kedalam instance SQLAlchemy pada file db_conn.py

 

lalu kita buat file baru dengan nama db-conn.py, pada file ini kita akan membuat tabel didalam database yang sudah kita buat tadi, kita akan mengimpor SQLAlchemy ke dalam file db-conn.py

from flask_sqlalchemy import SQLAlchemy

# SQLAlchemy instance

db = SQLAlchemy()

jangan lupa untuk membuat instance SQLAlchemy di dalam modul tersebut, agar kita dapat mengakses dan berinteraksi dengan database dalam aplikasi Flask.

 

Selanjutnya kita akan membuat class untuk model database kita, ini akan berisi tabel yang akan kita buat, yaitu sebagai berikut

# model

class Log(db.Model):

id = db.Column(db.Integer, primary_key=True)

file_name = db.Column(db.String(50))

result = db.Column(db.String(50))

date = db.Column(db.String(50))

score = db.Column(db.Float)

def __init__(self, file_name, result, date, score):

self.file_name = file_name

self.result = result

self.date = date

self.score = score

def __repr__(self):

return '<Log %r>' % self.file_name

nama class ini akan menjadi nama tabel kita, kemudian kita tambahkan kolom pada tabel kita, setelah itu kita gunakan def __init__ untuk menginisiasi.

 

Setelah itu kita membuat file baru kita beri nama create_table.py yang akan meninport databse_conn dan app untuk membuat tabel pada database, kemudian kita jalankan filenya.

from db_conn import db

from app import app

 

with app.app_context():

db.create_all()

apabila tidak terjadi error berarti tabel telah berhasil dibuat pada database, kita dapat membuktikannya dengan membuka pada phpmyadmin

yes tabel telah berhasil dibuat, selanjutnya kita akan menambahkan beberapa query pada fungsi pada flask kita.

 

Jadi yang akan kita lakukan adalah mencatat hasil dari prediksi yang mana terdapat pada fungsi rocess_image(fileimage), jadi kita akan mengambil setiap nilai pengembalian atau return lalu menempatkannya pada database, kita juga akan mengambil informasi file name pada gambar yang diprediksi, kemudian score prediksi dan juga waktu prediksi, dan tentunya hasil dari prediksi.

# query untuk menyimpan data ke database

hasil = ''

if prediksi > 0.5:

hasil = 'Hasil Prediksi: Sedih'

log = Log(filename, hasil, datetime.now(), prediksi[0][0])

db.session.add(log)

db.session.commit()

else:

hasil = 'Hasil Prediksi: Senang'

log = Log(filename, hasil, datetime.now(), prediksi[0][0])

db.session.add(log)

db.session.commit()

return hasil

 

oke kita akan coba aplikasi yang sudah kita buat, kita akan menjalankannya dengan perintah flask run. Disini saya menyiapkan gambar untuk kita uji pada flask app kita

flask berhasil berjalan dan saya sudah memasukan file bernama gambar1.jpg, kemudian dapat kita lihat juga database masih kosong, kita akan coba memasukan datanya dengan klik submit.

 

okay data yang kita kirimkan berhasil masuk, dan record oleh database, selanjutnya kita akan mencoba menampilkan hasil lognya ke dalam flask app kita.

 

Pertama kita tambahkan tabel pada index.html kita, kita buat setelah tag </form>

<br>

<h2>History :</h2>

<table class="table table-striped">

<thead>

<tr>

<th>No. </th>

<th>Nama File</th>

<th>Hasil </th>

<th>Tanggal</th>

<th>Nilai </th>

</tr>

</thead>

<tbody>

{% for d in data %}

<tr>

<td>{{d.id}}</td>

<td>{{d.file_name}}</td>

<td>{{d.result}}</td>

<td>{{d.date}}</td>

<td>{{d.score}}</td>

</tr>

{% endfor %}

</tbody>

 

lalu pada routes index / kita tambahkan method GET lalu kita query.all() data pada model dan ditampung pada variabel data sehingga akan terlihat seperti ini

@app.route('/' , methods=['GET'])

def index():

data = Log.query.all()

print (data)

return(render_template('index.html', data=data))

 

Nah seperti itu lah cara melakukan integrasi flash dengan menggunakan database mysql dan model machine learning, sekian materi hari ini semoga bermanfaat, apabila ada pertanyaan jangan malu untuk bertanya ya, Semangat!

Quiz

Referensi

https://www.digitalocean.com/community/tutorials/how-to-use-flask-sqlalchemy-to-interact-with-databases-in-a-flask-application

 

Last modified: Monday, 7 August 2023, 10:11 AM