Instalasi : pip install psycopg2
1. Instalasi psycopg2Pastikan kamu menginstal psycopg2-binary untuk berkomunikasi dengan PostgreSQL:
pip install psycopg2-binary flask flask-cors
2. Struktur Folder
my_flask_app/
│── app/
│ ├── controllers/
│ │ ├── user_controller.py
│ │ ├── __init__.py
│ ├── models/
│ │ ├── user_model.py
│ │ ├── __init__.py
│ ├── __init__.py
│── config.py
│── run.py
│── requirements.txt
3. Konfigurasi Koneksi Database (config.py
)
Buat file config.py
untuk menyimpan konfigurasi database:
DB_CONFIG = {
'dbname': 'nama_database',
'user': 'username',
'password': 'password',
'host': 'localhost',
'port': '5432'
}
Gantilah nama_database
, username
, dan password
sesuai dengan konfigurasi PostgreSQL kamu.
4. Model dengan psycopg2 (app/models/user_model.py
)
Buat model untuk mengelola database menggunakan psycopg2 secara manual:
import psycopg2
from config import DB_CONFIG
class UserModel:
@staticmethod
def get_connection():
"""Membuat koneksi ke database."""
return psycopg2.connect(**DB_CONFIG)
@staticmethod
def get_all_users():
"""Mengambil semua data pengguna dari database."""
conn = UserModel.get_connection()
cursor = conn.cursor()
cursor.execute("SELECT id, name, email FROM users;")
users = cursor.fetchall()
cursor.close()
conn.close()
return [{"id": u[0], "name": u[1], "email": u[2]} for u in users]
@staticmethod
def create_user(name, email):
"""Menambahkan pengguna baru ke database."""
conn = UserModel.get_connection()
cursor = conn.cursor()
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s) RETURNING id;", (name, email))
user_id = cursor.fetchone()[0]
conn.commit()
cursor.close()
conn.close()
return {"id": user_id, "name": name, "email": email}
5. Controller untuk API (app/controllers/user_controller.py
)
from flask import Blueprint, request, jsonify
from app.models.user_model import UserModel
user_bp = Blueprint('user_bp', __name__)
@user_bp.route('/', methods=['GET'])
def get_users():
users = UserModel.get_all_users()
return jsonify(users)
@user_bp.route('/', methods=['POST'])
def create_user():
data = request.json
new_user = UserModel.create_user(data['name'], data['email'])
return jsonify(new_user), 201
6. Menghubungkan Controller ke Flask (app/__init__.py
)
from flask import Flask
from flask_cors import CORS
def create_app():
app = Flask(__name__)
CORS(app)
# Import dan register blueprint
from app.controllers.user_controller import user_bp
app.register_blueprint(user_bp, url_prefix='/users')
return app
7. Menjalankan Aplikasi (run.py
)
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
8. Menyiapkan Database PostgreSQL
(1) Buat Database
CREATE DATABASE nama_database;
(2) Buat Tabel
Jalankan perintah SQL berikut untuk membuat tabel users
:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
9. Menjalankan Aplikasi
Jalankan aplikasi dengan:
python run.py
API tersedia di:
- GET
http://127.0.0.1:5000/users/
→ Mengambil semua user - POST
http://127.0.0.1:5000/users/
→ Menambahkan user baru (Body JSON):{ "name": "John Doe", "email": "johndoe@example.com" }
Kesimpulan
✅ Psycopg2 digunakan untuk interaksi database tanpa SQLAlchemy.
✅ Koneksi ke database dibuat di model (user_model.py
).
✅ API dibuat dalam controller (user_controller.py
).
✅ Struktur MVC tetap terjaga.