Skip to content

1.5.4 Pendefinisian Model

David Rigan edited this page Feb 13, 2020 · 3 revisions

Model biasanya python class dengan atribut yang cocok dengan kolom tabel database. Tulislah sebuah kode di app.py:

# app.py: membuat tabel User dan Role
...
from flask_sqlalchemy import SQLAlchemy

...
# Forms
class UserForm(FlaskForm):
    name = StringField('Siapa nama kamu?', validators=[DataRequired()])
    submit = SubmitField('Lanjutkan')

# Model - Tambahkan Ini
class Role(db.Model):
    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    
    def __repr__(self):
        return '<Role {}>'.format(self.name)

class User(db.Model):
    __tablename__ = 'users'
    
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    
    def __repr__(self):
        return '<User {}>'.format(self.username)

Variabel kelas __tablename__ mendefinisikan nama tabel dalam database. Flask-SQLAlchemy memberikan nama tabel default jika __tablename__ dihilangkan, tetapi nama-nama default itu tidak mengikuti konvensi populer menggunakan bentuk jamak untuk nama tabel, jadi yang terbaik adalah memberi nama tabel secara eksplisit. Variabel kelas yang tersisa adalah atribut model seperti db.Integer, didefinisikan sebagai turunan dari kelas db.Column. Metode repr memberi representasi string agar memudahkan pengujian dan debugging.

Tipe kolom populer dari SQLAlchemy

Nama Tipe Tipe Python
Integer int
SmallInteger int
BigInteger int or long
Float float
Numeric decimal.Decimal
String str
Text str
Unicode unicode
UnicodeText unicode
Boolean bool
Date datetime.date
Time datetime.time
DateTime datetime.datetime
Interval datetime.timedelta
Enum str
PickelType object python
LargeBinary str

Tipe pilihan kolom populer dari SQLAlchemy

Nama Deskripsi
primary_key Jika nilainya True, maka kolom tabel ini primary key
unique Jika nilainya True, maka tidak boleh memiliki nilai yang sama
index Jika nilainya True, maka kolom akan terindex
nullable Jika nilainya True, maka kolom ini bisa kosong, dan sebaliknya
default Memberikan nilai default pada kolom

Clone this wiki locally