Oke. Sekarang kita coba belajar tornadoweb. Sebelume, tornado itu adalah web framework pada python dan bisa juga dijadikan sebagai web server. Eh info juga, ternyata tornado web sekarang sudah versi 1.2, entah kapan tanggal rilisnya. Karena yang tak download dulu yang versi 0.2. Lebih lanjut tentang tornado, bisa kita lihat di official website nya
Oiya, dalam percobaan kali ini kita akan menggunakan database MySQL pada lampp (xampp versi linux) sebagai backend nya #halah.
Pertama kita buat database & tabelnya
create database percobaan;
use percobaan;
create table anggota (
id int not null primary key auto_increment,
nama varchar (30)not null,
alamat varchar (50)not null,
pekerjaan varchar (40)not null
);
contoh kita mbuat tabel anggota kelompok ronda.
.
Setelah buat database sekarang kita buat aplikasinya, buat sebuah direktori tempat kita membuat direktori tempat meletakkan aplikasinya. *dan didalam direktori tersebut kita masukan juga direktori tornadonya.*. Eh tapi sebelumnya buat install dulu MySQL-Python di komputer. untuk detail instalasinya cari sendiri yee.
. Untuk ngetes apakah mysql-python sudah berjalan jalankan python, terus import _mysql. Kalo lancar berarti sudah sip.
contoh hirarki direktorinya:
- appsku:
- tornado
- app.py
Karena dalam tulisan di atas python scriptnya kita namai app.py, maka buat file app.py di direktori appsku. Terus buka file app.py & mari kita mulai :
#!/usr/bin/env python
# nama filenya app.py
#import modul2 yang dibutuhkan
import tornado.database
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
#definisikan pada port berapa aplikasi kita berjalan
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)
#sekarang kita buat class untuk halaman utamanya
class MainHandler(tornado.web.RequestHandler):
def get(self):
konek = tornado.database.Connection("/opt/lampp/var/mysql/mysql.sock","percobaan",user="root")
self.write("""
<html><head><title>Daftar Anggota Kelompok Ronda RT 43 </title></head>
<body><div align="center"><h3>Daftar anggota kelompok ronda RT 43</h3>
<table name="listanggota" border="1" ><tr>
<td>No</td><td>Nama</td>
<td>Alamat</td><td>Pekerjaan</td>
</tr>
""")
if len(konek.query("SELECT * from anggota")) < 1:
self.write("data masih kosong!")
for a in konek.query("SELECT * FROM anggota"):
self.write("<tr><td>" )
self.write(str(a.id))
self.write("</td><td>" )
self.write(a.nama)
self.write(" </td><td>")
self.write(a.alamat)
self.write("</td><td>")
self.write(a.pekerjaan)
self.write("</td></tr>")
self.write("</table>")
self.write("<br/> <a href=/insert>tambah</a> anggota")
self.write(" </div> </body></html>")
#sekarang class untuk tambah data dan post tambahan data
class Isi(tornado.web.RequestHandler):
def get(self):
self.write("<html><head><title>Tambah Anggota Baru </title></head><body>")
self.write("""<div align="center">
<h3>Tambahkan Anggota Baru: </h3>
<form method="post" action="/insert">
<table name="form-input" border="0">
<tr><td><label for="nama">Nama: </label></td>
<td><input type="text" name="nama"><br /></td></tr>
<tr><td><label for="alamat">Alamat:</label></td>
<td><input type="text" name="alamat"><br /></td></tr>
<tr><td><label for="pekerjaan">Pekerjaan:</label></td>
<td><input type="text" name="pekerjaan"><br /></td></tr></table>
<input type="submit" value="send">
<input type="reset" value="clear">
<a href="/"><input type="button" value="batal"></a>
</form>
</body></div>
</html>""")
def post(self):
nama = self.get_argument("nama",None)
alamat = self.get_argument("alamat",None)
pekerjaan = self.get_argument("pekerjaan",None)
if not nama or not alamat or not pekerjaan:
self.write("data tidak lengkap, silakan diulang kembali. Klik back pada browser")
else:
konek = tornado.database.Connection("/opt/lampp/var/mysql/mysql.sock","percobaan",user="root")
konek.execute(u'''insert into anggota(nama,alamat,pekerjaan) values (%s,%s,%s)''',nama,alamat,pekerjaan)
self.redirect("/")
#kita buat fungsi utamanya
def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
(r"/insert", Isi)
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
Eh iya, itu karena kita MySQLnya berada di lampp / xampp. maka yang kita isikan bukan localhost, tapi ‘/pathlokasilampp/var/mysql/mysql.sock’.
Dan, err sori itu kode htmlnya rada membuat berantakan ya?
. Kan ini baru versi 1, jadi kita belum pake template dll.:))
Jalankan file app.py tadi ($python app.py), karena dalam pengaturan port untuk httpnya 8888, maka setelah dijalankan url di browser adalah http://localhost:8888 . Mari kita lihat hasilnya
http://localhost:8888

http://localhost:8888/insert

list anggota yang sudah lumayan banyak..

Oke, mungkin itu dulu sodara2 sekalian. mohon maaf kalo masih banyak salah2.hihi.