-
Notifications
You must be signed in to change notification settings - Fork 0
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 |
Referensi :
- Miguel Grinberg - Flask Web Development, Developing Web Applications with Python