0% menganggap dokumen ini bermanfaat (0 suara)
33 tayangan6 halaman

Flask and Databases

Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
33 tayangan6 halaman

Flask and Databases

Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 6

Flask and Databases

Tags @May 2, 2023 9:40 AM

Capainan Pembelajaran

Created by Rahadian Kristiyanto R

Created time @May 2, 2023 9:40 AM

Last edited by Rahadian Kristiyanto R

Materi Python Back-End Development

Multi-select

Status Done

Pendahuluan
Halo Mahasiswa Stupenss, selamat datang kembali di sesi pembelajaran Flask! Pada materi kali ini, kita akan
membahas topik yang sangat penting dalam pengembangan aplikasi web yaitu Flask Database menggunakan
SQLAlchemy. Materi ini merupakan kelanjutan dari pembahasan sebelumnya tentang Templates dan Form
yang telah kita pelajari. Dengan mempelajari Flask Database menggunakan SQLAlchemy, kamu akan
memahami bagaimana cara membuat dan mengelola database pada aplikasi Flask yang kamu buat. Mari kita
mulai pembelajaran ini dan temukan bagaimana Flask Database menggunakan SQLAlchemy dapat
membantu kamu dalam mengembangkan aplikasi web yang lebih dinamis dan interaktif!

Coba Stupenss, bayangkan kamu sebagai seorang pengembang aplikasi web yang ingin menghubungkan
aplikasimu dengan database relasional seperti MySQL atau PostgreSQL. Kamu pasti tahu bahwa untuk
melakukan interaksi dengan database, kamu harus menulis kode SQL yang cukup kompleks, terutama jika
kamu ingin melakukan operasi- operasi seperti pengambilan data, pembaruan data, atau penghapusan data.
Nah, itulah sebabnya SQLAlchemy hadir untuk membantumu mengatasi masalah ini.
Dengan menggunakan SQLAlchemy, kamu tidak perlu lagi menulis kode SQL yang rumit. Sebaliknya, kamu
dapat menggunakan sintaks Python yang lebih familiar dan mudah dipahami. SQLAlchemy akan mengubah
sintaks Pythonmu ke dalam bahasa SQL yang dapat dipahami oleh database relasional yang kamu gunakan.
Dengan begitu, kamu dapat melakukan operasi- operasi pada database dengan lebih mudah dan efisien,
tanpa harus khawatir dengan perbedaan-perbedaan detail dari masing-masing jenis database.

Flask and Databases 1


Tidak hanya itu, SQLAlchemy juga memungkinkan kamu untuk memetakan data yang disimpan di dalam
database ke dalam objek Python dan sebaliknya, sehingga mempermudah pengelolaan data di dalam aplikasi
Flask. Dengan demikian, kamu dapat memanfaatkan kekuatan Python untuk mengelola data, seperti
melakukan operasi matematis atau transformasi data, yang mungkin sulit dilakukan dengan SQL.
Jadi, bisa kita katakan bahwa SQLAlchemy adalah seperti penerjemah antara Python dan database
relasional. Dengan bantuan SQLAlchemy, kamu dapat berkomunikasi dengan database menggunakan
bahasa Python yang lebih mudah dipahami dan kamu juga dapat memanfaatkan kekuatan Python untuk
mengelola data di dalam aplikasi Flaskmu. Keren, bukan?
Nah stupenss pada materi kali ini kita akan mencoba belajar untuk membuat aplikasi Todolist sederhana
menggunakan flask dan SQLAlchemy, jadi yuk kita mulai dari tahap pertama!

1. Instalasi SQLalchemy
Pertama-tama, pastikan Kamu telah menginstall SQLAlchemy pada virtual environment. Kamu dapat
melakukannya dengan menjalankan perintah pip install SQLAlchemy pada terminal atau command prompt,
eits..!! sebelu melakukan perintah install pastikan kamu sudah mengaktifkan virtual environtment
kamu yaa.

Install SQLAlchemy

2. Konfigurasi Koneksi Database

Flask and Databases 2


Setelah menginstal SQLAlchemy kedalam virtual environment, selanjutnya kamu dapat melakukan konfigurasi
database nih stupenss. SQLAlchemy mendukung banyak jenis database seperti MySQL, PostgreSQL, SQLite,
dan masih banyak lagi. Untuk melakukan konfigurasi koneksi database, kamu perlu mengisi beberapa
parameter seperti nama database, alamat server, username, dan password. Berikut adalah contoh konfigurasi
koneksi database untuk MySQL:

from sqlalchemy import create_engine

# konfigurasi koneksi database


db_uri = "mysql+mysqlconnector://root:@localhost/todo"
engine = create_engine(db_uri)

3. Membuat model
Setelah melakukan konfigurasi koneksi database, selanjutnya kita perlu membuat model atau representasi
objek dari tabel di dalam database. Model ini akan menjadi objek yang akan kita gunakan untuk melakukan
operasi pada tabel di dalam database. Berikut adalah contoh membuat model pada SQLAlchemy:

from sqlalchemy.ext.declarative import declarative_base


from sqlalchemy import Column, Integer, String
import datetime as dt

# Model database todo


Base = declarative_base()
class TodoModel(Base):
__tablename__ = 'todo'
id = Column(Integer, primary_key=True)
todo = Column(String(50))
status = Column(String(50))
crate_at = Column(String(50), default=dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

def __repr__(self):
return "<TodoModel(todo='%s', status='%s', crate_at='%s')>" % (
self.todo, self.status, self.crate_at)

# Membuat tabel
Base.metadata.create_all(engine)

Pada contoh di atas, kita membuat model TodoModel yang merepresentasikan tabel todo di dalam database.
Kita menggunakan SQLAlchemy ORM (Object-Relational Mapping) untuk memetakan tabel todo menjadi
sebuah kelas Python bernama TodoModel. Kita mendefinisikan atribut id, todo, ststus, dan create_at pada
kelas TodoModel yang merepresentasikan kolom di dalam tabel todo.

4. Membuat Session
Setelah membuat model, selanjutnya kita perlu membuat session atau sesi yang memungkinkan kita untuk
melakukan operasi pada tabel di dalam database. Session ini akan menjadi jembatan antara aplikasi Flask
kita dengan database. Berikut adalah contoh membuat session pada SQLAlchemy:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

Pada contoh di atas, kita membuat objek session menggunakan sessionmaker yang terhubung dengan objek
engine yang telah kita buat sebelumnya. Objek session ini nantinya akan kita gunakan untuk melakukan
operasi CRUD pada tabel di dalam database.

Flask and Databases 3


5. Melakukan operasi CRUD
Setelah membuat session, kita dapat mulai melakukan operasi CRUD pada tabel di dalam database. Berikut
adalah contoh melakukan operasi CRUD pada SQLAlchemy:

from flask import Flask, redirect,render_template,request

#App
app = Flask(__name__)

# menampilkan data
@app.route("/" , methods=['GET'])
def index():
# mengambil data dari database
todo_list = ({
'id': todo.id,
'todo': todo.todo,
'status': todo.status,
'crate_at': todo.crate_at
} for todo in session.query(TodoModel).all())
return render_template("index.html", todo_list=todo_list)

# menambah data data


@app.route('/add', methods=['POST'])
def add():
todo = request.form['todo']
status = False
todo_data = TodoModel(todo=todo, status=status)
session.add(todo_data)
session.commit()
return redirect('/')

# mengubah status data


@app.route('/delete/<int:id>')
def delete(id):
todo = session.query(TodoModel).filter_by(id=id).first()
todo.status = True
session.commit()
return redirect('/')

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

Pada contoh di atas, kita membuat sebuah aplikasi Flask sederhana yang dapat melakukan operasi CRUD
pada tabel users di dalam database PostgreSQL. Aplikasi ini memiliki empat endpoint yaitu:

1. /add untuk menambah data user ke dalam database.

2. / untuk menampilkan seluruh data user yang ada di dalam database.

3. /delete/<int:user_id> untuk menghapus data user berdasarkan id dengan mengubah status pada
database.

6. Membuat template
Kemudian pada tahap akhir kita akan membuat template untuk menampilkan data yang ada pada database
sehingga data dapat di baca dengan jelas, untuk contoh templatenya seperti ini ya stupenss, namun kamu
dapat memodifikasinya sendiri yaa

<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Todo List</title>

Flask and Databases 4


<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
</head>

<body class="p-5 m-0 border-0 bd-example">


<div class="container">
<div class="row">
<div class="col-md-6 mx-auto">
<!-- Form Input -->
<div class="card text-center">
<div class="card-header">My Todo List</div>
<div class="card-body">
<form action="{{url_for('add')}}" method="post">
<input class="form-control" name="todo" type="text" placeholder="My Todo"
aria-label=".form-control-lg example" />
<button type="submit" class="btn btn-primary mt-3">Submit</button>
</form>
</div>
<div class="card-footer text-body-secondary"></div>
</div>
<!-- End Form Input -->

<!-- List Todo -->


<div class="card mt-4">
<div class="card-header">To-Do List</div>
<!-- tampilkan data dari Model -->
<ul class="list-group list-group-flush">
{% for item in todo_list if item.status|int == 0 %}
<li class="list-group-item">
<p>{{item.todo}}</p>
<a href="{{url_for('delete', id=item.id)}}">
<button type="submit" class="btn btn-danger">Selesai</button>
</a>
</li>
{% endfor %}
</ul>
</div>
<!-- End List Todo -->
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe"
crossorigin="anonymous"></script>
</body>
</html>

✨ Hore Stupenss! kamu telah belajar membuat todolist sederhana dengan mengimplementasikan
ORM SQLAlchemy padak Flask Programing, semoga materi yang disampaikan dapat dipahami ya,
jika ada kesulitan silhkan bertanya ya, jangan lupa untuk mengerjakan quiz dan dibawah juga ada
refrensi yang dapat kamu gunakan untuk mendalami materi! Semangat belajar Stupenss.

Quiz
1. Apa itu SQLAlchemy?
a. Sebuah bahasa pemrograman
b. Sebuah framework untuk membuat aplikasi web dengan Python
c. Sebuah package untuk menghubungkan Python dengan database relasional
d. Sebuah server web open source

2. Apa perbedaan antara SQLAlchemy Core dan SQLAlchemy ORM?


a. SQLAlchemy Core hanya mendukung kueri SQL sederhana, sedangkan SQLAlchemy ORM
mendukung ORM untuk melakukan mapping objek ke database.
b. SQLAlchemy Core hanya mendukung ORM untuk melakukan mapping objek ke database, sedangkan

Flask and Databases 5


SQLAlchemy ORM mendukung kueri SQL sederhana.
c. SQLAlchemy Core dan SQLAlchemy ORM sama-sama mendukung kueri SQL sederhana dan
ORM untuk melakukan mapping objek ke database.
d. SQLAlchemy Core dan SQLAlchemy ORM sama-sama tidak mendukung kueri SQL dan ORM.

3. Apa keuntungan menggunakan SQLAlchemy ORM?


a. Lebih mudah dalam menulis kueri SQL kompleks.
b. Lebih efisien dalam melakukan kueri ke database.
c. Memiliki keamanan yang lebih baik karena tidak perlu menuliskan kueri SQL langsung.
d. Lebih mudah dalam mengimplementasikan fitur-fitur baru seperti pagination atau sorting.

4. Bagaimana cara menghubungkan Flask dengan database menggunakan SQLAlchemy?


a. Dengan melakukan koneksi ke database secara langsung menggunakan package DB-API.
b. Dengan membuat instance engine dari package SQLAlchemy dan melakukan binding ke
session.
c. Dengan membuat instance session dari package SQLAlchemy dan melakukan binding ke engine.
d. Dengan melakukan koneksi ke database menggunakan package PyMySQL.

5. Bagaimana cara melakukan operasi CRUD pada SQLAlchemy dengan Flask?


a. Menggunakan package Flask-SQLAlchemy.
b. Menggunakan package Flask-Admin.
c. Menggunakan package Flask-WTF.
d. Menggunakan package Flask-Script.

Refrensi
https://www.freecodecamp.org/news/structuring-a-flask-restplus-web-service-for-production-builds-
c2ec676de563/
https://codepolitan.com/blog/menjadi-developer-web-dengan-python-dan-flask-database-5a601bca6febd
https://www.sqlalchemy.org/
https://python-adv-web-apps.readthedocs.io/en/latest/flask_db1.html#setup-flask-sqlalchemy
https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/
https://towardsdatascience.com/sqlalchemy-python-tutorial-79a577141a91

Flask and Databases 6

Anda mungkin juga menyukai