PBL - Penerapan Database MongoDB dengan Visual Studio Code

 Hal peratama yang harus dilakukan yaitu Cari data csv di web kaggle.com



Visualisasi & Filter Data, serta fungsi CRUD data.

Langkah - Langkah :

1. Import file datasheet yang akan dipakai ke MongoDB menggunakkan VS Code. pastikan file sudah csv dan nama sesuai dengan nama file. buat file pada VS Code dengan nama film.cvs

berikut kode untuk impor csv :

import csv
from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['pbl_pia']
koleksi = db['pblku']

# Impor data dari file CSV ke MongoDB
path_csv = 'pblku.csv'

with open(path_csv, 'r') as csvfile:
    csv_reader = csv.DictReader(csvfile)
    for row in csv_reader:
        koleksi.insert_one(row)
    print("Data dari CSV berhasil diimpor ke MongoDB.")

2. Untuk menampilkan data dan fungsi CRUD, buat file app.py lalu isi dengan kode seperti dibawah ini :

# import csv
from flask import Flask, render_template, request, redirect
from pymongo import MongoClient
from bson import ObjectId

app = Flask(__name__)
client = MongoClient('mongodb://localhost:27017/')
db = client['pbl_pia']
koleksi = db['pblku']

def index():
    data_cursor = koleksi.find()
    formatted_data = []
    header = ['Time_submitted','Review','Rating','Total_thumbsup','Reply']

    for row in data_cursor:
        formatted_row = {key: row[key] for key in header}
        formatted_data.append(formatted_row)

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

# Rute untuk menampilkan data dari koleksi MongoDB
@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        query = request.form.get('query')
        if query:
            data_cursor = koleksi.find({
                '$or': [
                    {'Time_submitted': {'$regex': query, '$options': 'i'}},
                    {'Review': {'$regex': query, '$options': 'i'}},
                    {'Rating': {'$regex': query, '$options': 'i'}},
                    {'Total_thumbsup': {'$regex': query, '$options': 'i'}},
                    {'Reply': {'$regex': query, '$options': 'i'}},
                ]
            })
            data_list = list(data_cursor)
            return render_template('index.html', data=data_list)
        else:
            return redirect('/')
    else:
        data_cursor = koleksi.find()
        data_list = list(data_cursor)
        return render_template('index.html', data=data_list)

# Rute untuk menambah data baru
@app.route('/add', methods=['POST'])
def add():
    new_data = {
        'Time_submitted': request.form['Time_submitted'],
        'Review': request.form['Review'],
        'Rating': request.form['Rating'],
        'Total_thumbsup': request.form['Total_thumbsup'],
        'Reply': request.form['Reply'],
    }
    koleksi.insert_one(new_data)
    return redirect('/')

# Rute untuk menghapus data
@app.route('/delete/<id>', methods=['GET'])
def delete(id):
    koleksi.delete_one({'_id': ObjectId(id)})
    return redirect('/')

# Rute untuk menampilkan form edit
@app.route('/edit/<id>', methods=['GET'])
def edit(id):
    data = koleksi.find_one({'_id': ObjectId(id)})
    return render_template('edit.html', data=data)

# Rute untuk menyimpan perubahan dari form edit
@app.route('/update/<id>', methods=['POST'])
def update(id):
    updated_data = {
        'Time_submitted': request.form['Time_submitted'],
        'Review': request.form['Review'],
        'Rating': request.form['Rating'],
        'Total_thumbsup': request.form['Total_thumbsup'],
        'Reply': request.form['Reply'],
    }
    koleksi.update_one({'_id': ObjectId(id)}, {'$set': updated_data})
    return redirect('/')

if __name__ == '__main__':
    app.run(debug=True)


HASIL!!

a. Tampilan awal :




b. Pada halaman awal akan muncul data yang sudah diimport dan jumlah datanya. Di sini juga terdapat tools untuk melakukan pencarian berdasarkan kategori tertentu


c. Tampilan "Tambah Data"




d. hapus data, dan edit data pada pojok kanan tabel




e. Tampilan Edit  data 



f. hasil dari pencarian


TERIMA KASIH. 

Komentar

Postingan populer dari blog ini

Demo Bypass Login dengan SQL Injection

RANSOMWARE