PBL - Penerapan Database MongoDB dengan Visual Studio Code
Hal peratama yang harus dilakukan yaitu Cari data csv di web kaggle.com
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 :
TERIMA KASIH.
Komentar
Posting Komentar