Wednesday, December 29, 2010

Penyimpanan Data Dan Koneksi Database Dengan Python di AppEngine

Tidak lengkap rasanya sebuah bahasa pemrograman bila tidak dilengkapi dengan fitur koneksi dan pengolahan database, pemrograman web dengan Python juga sudah mendukung koneksi dan pengolahan database.

Di Appengine, database yang digunakan lebih populer dengan sebutan Datastore. Tidak seperti database server populer yang sering kita gunakan seperti MySQL, PostgreSQL atau lainnya, DML (data management language) yang digunakan sangat berbeda dengan DML standar umumnya meskipun memiliki fungsi query yang sama (dengan fitur yang sedikit terbatas dari database server pada umumnya) yang hanya dirancang untuk aplikasi web yang lebih menitik beratkan pada kemampuan 'menulis' dan 'membaca' data.

Bila Anda sudah familiar dengan Django dan Data modelnya maka untuk memahami konsep dan pengolahan data di Datastore akan lebih mudah karena memiliki bentuk dan konsep penerapan yang hampir sama.

Disini tidak akan mengulas panjang lebar mengenai Datastore, untuk info lebih lengkap bisa Anda baca di dokumentasinya karena kita akan langsung mencoba pengaplikasiannya dengan program dan kode sederhana yang akan kita uji coba lewat konsol.

Sebuah tabel yang kita buat dalam Datastore akan tersimpan dalam bentuk sebuah objek data yang disebut Entity. Sebuah Entity memiliki satu atau beberapa 'Property' (yang berperan sebagai data field) yang masing-masing memiliki nilai dengan tipe data tertentu seperti integer, string, date, binary data dan lain-lain (untuk penjelasan lebih lengkap baca dokumentasinya). Setiap baris data secara otomatis akan di cantumkan Key yang bersifat unik, jadi sebenarnya kita tidak perlu membuat sebuah 'id key' untuk data yang kita buat.

Untuk membuat sebuah Entity sebelumnya kita harus membuat data modelnya lebih dahulu. Mari kita coba membuat model dengan didahului membuat aplikasinya lebih dahulu di 'localhost'. Pertama jalankan Appengine Launcher kemuadian buatlah aplikasi baru dan kemudian aktifkan dengan menekan tombol 'Run'

DATA MODEL

Disini kita akan membuat model untuk aplikasi yang kita beri nama 'engineapp4' dengan Model yang bernama 'Test'. setelah aplikasi diaktifkan tekan tombol 'SDK Console' pada Appengine Launcher.

Yang perlu diperhatikan, sebuah Entity akan terbentuk setelah dibuat modelnya dan terinput secara 'programming' , berikut contohnya :

##Membuat Model bernama Test
from google.appengine.ext import db

class Test(db.Model):
    nama = db.StringProperty(required=True)
    kelamin = db.StringProperty(required=True)
    umur = db.IntegerProperty(required=True)


##Memasukan satu baris data dengan memasukan datanya langsung
##lewat argumen pada Model yang kita buat
inputTest = Test(nama="PUPUT", kelamin="P", umur=26)

inputTest.put()

db.put(inputTest)


ketik contoh di atas pada konsol dengan mengklik menu 'Development Console' pada SDK Console yang sudah kita buka dan klik 'Run Program setelah selesai untuk mengeksekusi hasilnya. Bila tidak ada kesalahan maka di sisi sebelah kanan tidak akan tampil apa-apa, kemudian cek apakah Entity dan datanya sudah masuk dengan menekan link 'Datastore Viewer'.

QUERY

Sekarang kita mencoba membuat baris program untuk menampilkan baris data yang sudah kita input. Untuk menjalankan query, untuk menampilkan data kita dapat menggunakan salah satu metode dari modul 'db' yang telah kita panggil pada awal program yang kita buat, yaitu GqlQuery().

Selain menggunakan metode diatas kita juga dapat menggunakan metode gql(), untuk lebih lengkap mengenai operasi query dan pengolahan data pada Entity kita silahkan baca dokumentasinya.

Karena kita akan bekerja lewat konsol, untuk menggunakan Entity yang sudah buat kita harus mendefinisikan lebih dahulu model dari Entity yang sudah kita buat. 

from google.appengine.ext import db

##Definisikan model
class Test(db.Model):
    nama = db.StringProperty(required=True)
    kelamin = db.StringProperty(required=True)
    umur = db.IntegerProperty(required=True)


##Query pencarian data
query = db.GqlQuery("SELECT * FROM Test")
result = query.fetch(10)


##Tampilkan data
for row in result:
    print "Nama : " + row.nama
    print "Kelamin : " + row.kelamin
    print "Umur : " + str(row.umur)


Setelah itu klik 'Run Program', data yang akan tampil kurang lebih akan seperti ini :

Nama : PUPUT
Kelamin : P
Umur : 26


UPDATE DATA

Berikut contoh untuk melakukan pengeditan data :

from google.appengine.ext import db

##Definisi Model
 class Test(db.Model):
    nama = db.StringProperty(required=True)
    kelamin = db.StringProperty(required=True)
    umur = db.IntegerProperty(required=True)


##Cari data yang akan diupdate
query = db.GqlQuery("SELECT * FROM Test WHERE nama = :1", "PUPUT")

##Update data
for update in query:
    update.nama = "PUPUT"
    update.kelamin = "P"
    update.umur = 28

update.put()


Coba cek Datastore Anda


DELETE DATA

Sekarang kita akan coba untuk menghapus data yang sudah kita input tapi sebelumnya tambah dulu entity yang ada pada datastore Anda.

from google.appengine.ext import db

##Definisikan model
class Test(db.Model):
    nama = db.StringProperty(required=True)
    kelamin = db.StringProperty(required=True)
    umur = db.IntegerProperty(required=True)


##Cari data yang akan dihapus
query = db.GqlQuery("SELECT * FROM Test WHERE nama = :1", "PUPUT")

##Hapus data
result = query.fetch(5)

db.delete(result)


Mudah bukan, silahkan coba kode-kode di atas dan gali lebih mendalam dokumentasi yang ada (Versi PDF tulisan ini bisa didapatkan disini)

No comments: