Difference between revisions of "Mengelola Basis Data dengan SQLAlchemy"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah struktur materi untuk kuliah "Pengenalan Deployment Aplikasi Web menggunakan Python" yang terdiri dari empat bagian utama, masing-masing dengan tiga modul: **1...")
 
Line 1: Line 1:
Berikut adalah struktur materi untuk kuliah "Pengenalan Deployment Aplikasi Web menggunakan Python" yang terdiri dari empat bagian utama, masing-masing dengan tiga modul:
+
# Modul 1.3: Mengelola Basis Data dengan SQLAlchemy
  
**1. Dasar-dasar Pengembangan Web Menggunakan Python**
+
## Pendahuluan
  
  - **1.1. Pengenalan Flask: Membuat Aplikasi Web Sederhana**
+
Dalam pengembangan aplikasi web dengan Python, Flask adalah salah satu framework yang populer digunakan. Untuk mengelola basis data secara efisien dalam aplikasi Flask, kita dapat memanfaatkan SQLAlchemy, sebuah Object Relational Mapper (ORM) yang memungkinkan interaksi dengan basis data menggunakan objek Python. Modul ini akan membahas integrasi Flask dengan SQLAlchemy, pembuatan model data, serta operasi CRUD (Create, Read, Update, Delete) dengan contoh-contoh yang dapat diterapkan pada sistem operasi Ubuntu 24.04.
    - Memahami konsep dasar Flask dan cara membuat aplikasi web sederhana.
 
    - Contoh: Membuat halaman "Hello, World!" menggunakan Flask.
 
    - Referensi: [Tutorial Flask oleh Miguel Grinberg](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world)
 
  
  - **1.2. Struktur Proyek Flask dan Manajemen Template**
+
## Instalasi Flask dan Flask-SQLAlchemy di Ubuntu 24.04
    - Mempelajari struktur proyek yang baik dalam Flask dan penggunaan template untuk memisahkan logika dan tampilan.
 
    - Contoh: Menggunakan Jinja2 untuk membuat template dinamis.
 
    - Referensi: [Tutorial Flask Resmi](https://flask.palletsprojects.com/en/stable/tutorial/)
 
  
   - **1.3. Mengelola Basis Data dengan SQLAlchemy**
+
Sebelum memulai, pastikan sistem Anda telah terinstal Python 3. Berikut adalah langkah-langkah untuk menginstal Flask dan Flask-SQLAlchemy:
    - Integrasi Flask dengan SQLAlchemy untuk operasi basis data.
+
 
    - Contoh: Membuat model data dan melakukan operasi CRUD.
+
1. **Perbarui daftar paket dan tingkatkan paket yang sudah ada:**
    - Referensi: [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)
+
 
 +
  ```bash
 +
  sudo apt update
 +
  sudo apt upgrade -y
 +
  ```
 +
 
 +
2. **Instal Python 3 dan pip:**
 +
 
 +
   ```bash
 +
  sudo apt install python3 python3-pip -y
 +
  ```
 +
 
 +
3. **Buat direktori proyek dan navigasikan ke dalamnya:**
 +
 
 +
  ```bash
 +
  mkdir flask_app
 +
  cd flask_app
 +
  ```
 +
 
 +
4. **Buat dan aktifkan virtual environment:**
 +
 
 +
  ```bash
 +
  python3 -m venv venv
 +
  source venv/bin/activate
 +
  ```
 +
 
 +
5. **Instal Flask dan Flask-SQLAlchemy:**
 +
 
 +
  ```bash
 +
  pip install Flask Flask-SQLAlchemy
 +
  ```
 +
 
 +
  Langkah-langkah di atas memastikan bahwa Flask dan Flask-SQLAlchemy terinstal dalam virtual environment proyek Anda. citeturn0search9
 +
 
 +
## Integrasi Flask dengan SQLAlchemy
 +
 
 +
Setelah instalasi, kita dapat mengintegrasikan Flask dengan SQLAlchemy dalam aplikasi kita. Berikut adalah langkah-langkahnya:
 +
 
 +
1. **Buat file `app.py` dan tambahkan kode berikut:**
 +
 
 +
  ```python
 +
  from flask import Flask
 +
  from flask_sqlalchemy import SQLAlchemy
 +
  import os
 +
 
 +
  app = Flask(__name__)
 +
  basedir = os.path.abspath(os.path.dirname(__file__))
 +
  app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.db')
 +
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
 +
 
 +
  db = SQLAlchemy(app)
 +
  ```
 +
 
 +
  Pada kode di atas, kita mengatur URI basis data untuk menggunakan SQLite yang akan disimpan dalam file `app.db` di direktori proyek. citeturn0search3
 +
 
 +
2. **Definisikan model data dengan membuat kelas yang mewarisi `db.Model`:**
 +
 
 +
  ```python
 +
  class User(db.Model):
 +
      id = db.Column(db.Integer, primary_key=True)
 +
      username = db.Column(db.String(80), unique=True, nullable=False)
 +
      email = db.Column(db.String(120), unique=True, nullable=False)
 +
 
 +
      def __repr__(self):
 +
          return f'<User {self.username}>'
 +
  ```
 +
 
 +
  Model `User` di atas memiliki tiga kolom: `id`, `username`, dan `email`. citeturn0search1
 +
 
 +
3. **Inisialisasi basis data dan buat tabel:**
 +
 
 +
  ```python
 +
  with app.app_context():
 +
      db.create_all()
 +
  ```
 +
 
 +
  Kode ini akan membuat tabel-tabel di basis data sesuai dengan model yang telah didefinisikan.
 +
 
 +
## Operasi CRUD dengan Flask-SQLAlchemy
 +
 
 +
Setelah model data dibuat, kita dapat melakukan operasi CRUD sebagai berikut:
 +
 
 +
### 1. Create (Membuat Data Baru)
 +
 
 +
Untuk menambahkan pengguna baru ke dalam basis data:
 +
 
 +
```python
 +
from flask import Flask
 +
from flask_sqlalchemy import SQLAlchemy
 +
import os
 +
 
 +
app = Flask(__name__)
 +
basedir = os.path.abspath(os.path.dirname(__file__))
 +
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.db')
 +
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
 +
 
 +
db = SQLAlchemy(app)
 +
 
 +
class User(db.Model):
 +
    id = db.Column(db.Integer, primary_key=True)
 +
    username = db.Column(db.String(80), unique=True, nullable=False)
 +
    email = db.Column(db.String(120), unique=True, nullable=False)
 +
 
 +
    def __repr__(self):
 +
        return f'<User {self.username}>'
 +
 
 +
with app.app_context():
 +
    db.create_all()
 +
    new_user = User(username='john_doe', email='john@example.com')
 +
    db.session.add(new_user)
 +
    db.session.commit()
 +
```
 +
 
 +
### 2. Read (Membaca Data)
 +
 
 +
Untuk mengambil semua pengguna dari basis data:
 +
 
 +
```python
 +
with app.app_context():
 +
    users = User.query.all()
 +
    for user in users:
 +
        print(user.username, user.email)
 +
```
 +
 
 +
Untuk mengambil pengguna berdasarkan ID:
 +
 
 +
```python
 +
with app.app_context():
 +
    user = User.query.get(1)
 +
    print(user.username, user.email)
 +
```
 +
 
 +
### 3. Update (Memperbarui Data)
 +
 
 +
Untuk memperbarui informasi pengguna:
 +
 
 +
```python
 +
with app.app_context():
 +
    user = User.query.get(1)
 +
    user.email = 'new_email@example.com'
 +
    db.session.commit()
 +
```
 +
 
 +
### 4. Delete (Menghapus Data)
  
**2. Dasar-dasar Komunikasi Backend pada Web Python**
+
Untuk menghapus pengguna dari basis data:
  
  - **2.1. Routing dan Metode HTTP dalam Flask**
+
```python
    - Memahami cara kerja routing dan berbagai metode HTTP (GET, POST, PUT, DELETE).
+
with app.app_context():
    - Contoh: Membuat endpoint dengan berbagai metode HTTP.
+
    user = User.query.get(1)
    - Referensi: [Tutorial Flask Resmi](https://flask.palletsprojects.com/en/stable/tutorial/)
+
    db.session.delete(user)
 +
    db.session.commit()
 +
```
  
  - **2.2. Mengelola Formulir dan Validasi Input**
+
## Kesimpulan
    - Menggunakan Flask-WTF untuk mengelola formulir dan validasi input pengguna.
 
    - Contoh: Membuat formulir login dengan validasi.
 
    - Referensi: [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)
 
  
  - **2.3. Komunikasi Asinkron dengan JavaScript dan Flask**
+
Dengan menggunakan Flask dan SQLAlchemy, kita dapat mengelola basis data dalam aplikasi web Python secara efisien. Modul ini telah membahas cara mengintegrasikan Flask dengan SQLAlchemy, mendefinisikan model data, serta melakukan operasi CRUD dasar. Untuk informasi lebih lanjut, Anda dapat merujuk pada dokumentasi resmi Flask-SQLAlchemy. citeturn0search22
    - Mengintegrasikan Flask dengan JavaScript untuk komunikasi asinkron menggunakan AJAX.
 
    - Contoh: Memuat data secara dinamis tanpa me-refresh halaman.
 
    - Referensi: [Komunikasi Frontend dan Backend](https://www.reddit.com/r/learnprogramming/comments/8xdh5s/how_do_you_connect_the_frontend_and_backend/)
 
  
**3. Keamanan Aplikasi Web Python**
+
## Referensi
  
  - **3.1. Manajemen Autentikasi dan Otorisasi**
+
- [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)
    - Implementasi sistem login dan kontrol akses pengguna.
+
- [Flask-SQLAlchemy Documentation](https://flask-sqlalchemy.readthedocs.io/en/stable/)
    - Contoh: Menggunakan Flask-Login untuk manajemen sesi pengguna.
+
- [Flask Mega-Tutorial oleh Miguel Grinberg](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database)
    - Referensi: [Tutorial Flask Resmi](https://flask.palletsprojects.com/en/stable/tutorial/)
 
  
  - **3.2. Mencegah Serangan Umum pada Aplikasi Web**
+
Untuk panduan lebih lanjut tentang instalasi Flask di Ubuntu 24.04, Anda dapat merujuk pada artikel berikut:
    - Memahami dan mencegah serangan seperti SQL Injection dan Cross-Site Scripting (XSS).
 
    - Contoh: Menggunakan parameterized queries dan escaping output.
 
    - Referensi: [Analisis Keamanan Aplikasi Web dengan Python](https://bytescout.com/blog/python-tutorial-web-app-security.html)
 
  
  - **3.3. Mengamankan API dengan Tokenisasi**
+
- [Cara Menginstal Flask di Ubuntu 24.04](https://support.hostinger.com/en/articles/10725412-how-to-install-flask-on-ubuntu-24-04)
    - Menggunakan token untuk mengamankan komunikasi antara klien dan server.
+
- [How to Install Flask on Ubuntu 24.04](https://docs.vultr.com/how-to-install-flask-on-ubuntu-24-04)  
    - Contoh: Implementasi JSON Web Tokens (JWT) dalam Flask.
 
    - Referensi: [Membuat REST API dengan Flask](https://www.digitalocean.com/community/tutorials/create-a-rest-api-using-flask-on-ubuntu)
 
  
**4. Membangun RESTful API Menggunakan Python**
 
  
  - **4.1. Konsep Dasar RESTful API dan Implementasi dengan Flask**
 
    - Memahami prinsip REST dan cara mengimplementasikannya menggunakan Flask.
 
    - Contoh: Membuat endpoint RESTful untuk operasi CRUD.
 
    - Referensi: [Membuat REST API dengan Flask](https://www.digitalocean.com/community/tutorials/create-a-rest-api-using-flask-on-ubuntu)
 
  
  - **4.2. Dokumentasi API dengan Swagger**
 
    - Menggunakan Flask-Swagger untuk mendokumentasikan API yang dibuat.
 
    - Contoh: Menambahkan dokumentasi interaktif untuk endpoint yang tersedia.
 
    - Referensi: [Tutorial Flask-Swagger](https://github.com/flasgger/flasgger)
 
  
  - **4.3. Deployment Aplikasi Flask di Ubuntu 24.04**
 
    - Langkah-langkah untuk mendeploy aplikasi Flask pada server Ubuntu 24.04 tanpa menggunakan alat dari Microsoft.
 
    - Contoh: Menggunakan Gunicorn dan Nginx untuk menjalankan aplikasi di lingkungan produksi.
 
    - Referensi: [Instalasi Flask di Ubuntu 24.04](https://support.hostinger.com/en/articles/10725412-how-to-install-flask-on-ubuntu-24-04)
 
  
Struktur ini dirancang untuk memberikan pemahaman komprehensif tentang pengembangan dan deployment aplikasi web menggunakan Python, dengan fokus pada praktik terbaik dan contoh nyata yang dapat diterapkan langsung.
+
  - **1.3. Mengelola Basis Data dengan SQLAlchemy**
 +
    - Integrasi Flask dengan SQLAlchemy untuk operasi basis data.
 +
    - Contoh: Membuat model data dan melakukan operasi CRUD.
 +
    - Referensi: [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)

Revision as of 09:56, 6 April 2025

  1. Modul 1.3: Mengelola Basis Data dengan SQLAlchemy
    1. Pendahuluan

Dalam pengembangan aplikasi web dengan Python, Flask adalah salah satu framework yang populer digunakan. Untuk mengelola basis data secara efisien dalam aplikasi Flask, kita dapat memanfaatkan SQLAlchemy, sebuah Object Relational Mapper (ORM) yang memungkinkan interaksi dengan basis data menggunakan objek Python. Modul ini akan membahas integrasi Flask dengan SQLAlchemy, pembuatan model data, serta operasi CRUD (Create, Read, Update, Delete) dengan contoh-contoh yang dapat diterapkan pada sistem operasi Ubuntu 24.04.

    1. Instalasi Flask dan Flask-SQLAlchemy di Ubuntu 24.04

Sebelum memulai, pastikan sistem Anda telah terinstal Python 3. Berikut adalah langkah-langkah untuk menginstal Flask dan Flask-SQLAlchemy:

1. **Perbarui daftar paket dan tingkatkan paket yang sudah ada:**

  ```bash
  sudo apt update
  sudo apt upgrade -y
  ```

2. **Instal Python 3 dan pip:**

  ```bash
  sudo apt install python3 python3-pip -y
  ```

3. **Buat direktori proyek dan navigasikan ke dalamnya:**

  ```bash
  mkdir flask_app
  cd flask_app
  ```

4. **Buat dan aktifkan virtual environment:**

  ```bash
  python3 -m venv venv
  source venv/bin/activate
  ```

5. **Instal Flask dan Flask-SQLAlchemy:**

  ```bash
  pip install Flask Flask-SQLAlchemy
  ```
  Langkah-langkah di atas memastikan bahwa Flask dan Flask-SQLAlchemy terinstal dalam virtual environment proyek Anda. citeturn0search9
    1. Integrasi Flask dengan SQLAlchemy

Setelah instalasi, kita dapat mengintegrasikan Flask dengan SQLAlchemy dalam aplikasi kita. Berikut adalah langkah-langkahnya:

1. **Buat file `app.py` dan tambahkan kode berikut:**

  ```python
  from flask import Flask
  from flask_sqlalchemy import SQLAlchemy
  import os
  app = Flask(__name__)
  basedir = os.path.abspath(os.path.dirname(__file__))
  app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.db')
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  db = SQLAlchemy(app)
  ```
  Pada kode di atas, kita mengatur URI basis data untuk menggunakan SQLite yang akan disimpan dalam file `app.db` di direktori proyek. citeturn0search3

2. **Definisikan model data dengan membuat kelas yang mewarisi `db.Model`:**

  ```python
  class User(db.Model):
      id = db.Column(db.Integer, primary_key=True)
      username = db.Column(db.String(80), unique=True, nullable=False)
      email = db.Column(db.String(120), unique=True, nullable=False)
      def __repr__(self):
          return f'<User {self.username}>'
  ```
  Model `User` di atas memiliki tiga kolom: `id`, `username`, dan `email`. citeturn0search1

3. **Inisialisasi basis data dan buat tabel:**

  ```python
  with app.app_context():
      db.create_all()
  ```
  Kode ini akan membuat tabel-tabel di basis data sesuai dengan model yang telah didefinisikan.
    1. Operasi CRUD dengan Flask-SQLAlchemy

Setelah model data dibuat, kita dapat melakukan operasi CRUD sebagai berikut:

      1. 1. Create (Membuat Data Baru)

Untuk menambahkan pengguna baru ke dalam basis data:

```python from flask import Flask from flask_sqlalchemy import SQLAlchemy import os

app = Flask(__name__) basedir = os.path.abspath(os.path.dirname(__file__)) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.db') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class User(db.Model):

   id = db.Column(db.Integer, primary_key=True)
   username = db.Column(db.String(80), unique=True, nullable=False)
   email = db.Column(db.String(120), unique=True, nullable=False)
   def __repr__(self):
       return f'<User {self.username}>'

with app.app_context():

   db.create_all()
   new_user = User(username='john_doe', email='john@example.com')
   db.session.add(new_user)
   db.session.commit()

```

      1. 2. Read (Membaca Data)

Untuk mengambil semua pengguna dari basis data:

```python with app.app_context():

   users = User.query.all()
   for user in users:
       print(user.username, user.email)

```

Untuk mengambil pengguna berdasarkan ID:

```python with app.app_context():

   user = User.query.get(1)
   print(user.username, user.email)

```

      1. 3. Update (Memperbarui Data)

Untuk memperbarui informasi pengguna:

```python with app.app_context():

   user = User.query.get(1)
   user.email = 'new_email@example.com'
   db.session.commit()

```

      1. 4. Delete (Menghapus Data)

Untuk menghapus pengguna dari basis data:

```python with app.app_context():

   user = User.query.get(1)
   db.session.delete(user)
   db.session.commit()

```

    1. Kesimpulan

Dengan menggunakan Flask dan SQLAlchemy, kita dapat mengelola basis data dalam aplikasi web Python secara efisien. Modul ini telah membahas cara mengintegrasikan Flask dengan SQLAlchemy, mendefinisikan model data, serta melakukan operasi CRUD dasar. Untuk informasi lebih lanjut, Anda dapat merujuk pada dokumentasi resmi Flask-SQLAlchemy. citeturn0search22

    1. Referensi

- [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3) - [Flask-SQLAlchemy Documentation](https://flask-sqlalchemy.readthedocs.io/en/stable/) - [Flask Mega-Tutorial oleh Miguel Grinberg](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database)

Untuk panduan lebih lanjut tentang instalasi Flask di Ubuntu 24.04, Anda dapat merujuk pada artikel berikut:

- [Cara Menginstal Flask di Ubuntu 24.04](https://support.hostinger.com/en/articles/10725412-how-to-install-flask-on-ubuntu-24-04) - [How to Install Flask on Ubuntu 24.04](https://docs.vultr.com/how-to-install-flask-on-ubuntu-24-04)



  - **1.3. Mengelola Basis Data dengan SQLAlchemy**
    - Integrasi Flask dengan SQLAlchemy untuk operasi basis data.
    - Contoh: Membuat model data dan melakukan operasi CRUD.
    - Referensi: [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)