Tampilkan postingan dengan label migration. Tampilkan semua postingan
Tampilkan postingan dengan label migration. Tampilkan semua postingan

2009-05-14

Data Models di web2py MVC Framework

Gua baru belajar web2py nih buat implementasi dan mutasi program tradeERP gua... Web2py ada 3 bagian utama yaitu Models Controller dan View, untuk sementara gua learning Data Models dulu..

Di web2py support many data source... diantaranya Gluon dari Google App Engine, PostgreSQL, Mysql, dan SQLlite (default)


contoh menggunakan Gluon

try:
    from gluon.contrib.gql import *  # if running on Google App Engine
except:
    db = SQLDB('sqlite://storage.db')  # if not, use SQLite or other DB
else:
    db = GQLDB()  # connect to Google BigTable
    session.connect(request, response, db=db)  #  and store sessions there


Deklarasi standar database , table, insert, count, delete, dan update

db = SQLDB(‘postgres://user:password@hostname/db’, pools=10)
db.define_table(‘person’,db.Field(’name’,’string’))
id= db.person.insert(name=’max’)
query=(db.person.id==id)
db(query).count()
db(query).delete()
db(query).update(name=’Max’)
rows = db(query).select(orderby=db.person.name)
for row in rows: print row.name



drop table dan truncate

db.person.truncate()
db.person.drop()


Contoh deklarasi table ,  dan validasi table, serta reference table (foreign key)

db.define_table('products', SQLField('name'), SQLField('description',
                'text'))


# MANY (users) TO MANY (purchases)

db.define_table('purchases', SQLField('buyer_id', db.users),
                SQLField('product_id', db.products), SQLField('quantity'
                , 'integer'))

purchased = (db.users.id == db.purchases.buyer_id) & (db.products.id
         == db.purchases.product_id)

db.users.name.requires = IS_NOT_EMPTY()
db.users.email.requires = [IS_EMAIL(), IS_NOT_IN_DB(db, 'users.email')]
db.dogs.owner_id.requires = IS_IN_DB(db, 'users.id', 'users.name')
db.dogs.name.requires = IS_NOT_EMPTY()
db.dogs.type.requires = IS_IN_SET(['small', 'medium', 'large'])
db.purchases.buyer_id.requires = IS_IN_DB(db, 'users.id', 'users.name')
db.purchases.product_id.requires = IS_IN_DB(db, 'products.id',
        'products.name')
db.purchases.quantity.requires = IS_INT_IN_RANGE(0, 10)


Pretty clean and readable  dibanding JAVA .. hehehehehehe :D

Powered by ScribeFire.



Instalasi web2py MVC Framework

Gua lagi nyoba MVC frameworknya web2py ... download di http://www.web2py.com/examples/default/download

kemudian extract packagenya ....

Buka Port 8000 (pastikan tidak ada yang menggunakan port ini)
Sekarang siapkan program python-nya

install python 2.5 di komputer

Windows
download dulu python di www.python.org 
Jalankan installer Python.. tinggal next next next  :D

kemudian jalankan web2py dengan doubleclick web2py.py atau di comandprompt ketik python25 web2py.py

Di linux (Ubuntu/Mint)

sudo apt-get install python2.5

Untuk package databasenya jgn lupa

Postgresql
sudo apt-get install python2.5-psycopg2 atau python2.5-pgsql

Mysql
sudo apt-get install python2.5-mysqldb

untuk yang lain tinggal lihat di manual Python dan web2py

kemudian jalankan python2.5 web2py
masukkan password admin dan ........ web2py siap dijalankan



Powered by ScribeFire.



[Migration journey] PostgreSQL VS MS SQL Server

Gua berencana mau mutasi my old tradeERP ke Linux platform. pengennya sih pakai Oracle, tapi terlalu canggih, akhirnya gua putusin pakai PostgreSQL karena secara syntax dan struktur ga jauh beda dengan oracle.

Database sebelumnya gua pake MS SQL server  2000. update terbaru sudah keluar versi 2008 menggunakan .NET framework 3.5 ( kl tidak salah), karena itu gua males upgrade.. pasti ada tetek bengek dan sebagainya :P

Ini comparasi selama gua pelajari MSSQL dan PGSQL

Datatype :

Di postgreSQL tidak mengenal datatype tinyint , smallmoney , smalldatetime, dan datetime, semuanya mesti diconvert dahulu tinyint jadi smallint , smallmoney jadi numeric, smalldatetime / datetime jadi timestamp

PostgreSQL support banyak datatype diantaranya Array , Ciddr , Inetd, Polygon, Circle, GIS format, dsb. sedangkan SQL server tidak  (Udah mahal .. payah .. :P)

Store procedure :

DI postgreSQL kita bisa define variable dengan tipe data langsung dari table nya ..

contoh :

create table mydb ( idx as varchar(20) );
;

<font face="sans-serif">maka deklarasi variable untuk merefer idx adalah user_idx mydb.idx%TYPE<br /><br />RDMS & ORM <br /><br />Yang unik yang belum aku temuin di MSSQL adalah di postgreSQL support inheritance dan polymorph.. dasar OOP<br />jadi bener-bener Object Oriented Database :D<br /><br />contohnya <br /><br /></font><small><font face="sans-serif"><i><small>CREATE TABLE cities (<br />    name            text,<br />    population      float,<br />    altitude        int     -- in feet<br />);<br /><br />CREATE TABLE capitals (<br />    state           char(2)<br />) INHERITS (cities);<br /></small></i></font></small><font face="sans-serif"><small><font face="sans-serif"><i><small><br />select * from capitals;<br /><br /><u>name | population | altitude | state </u></small></i></font></small><br />.....................<br /><br /><br /></font>
Yang lain tentang postgreSQL menyusul




Powered by ScribeFire.