SQLAlchemy
Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini. Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala. Tag ini diberikan pada Januari 2023. |
Tipe | database interface (en) , Bahasa kueri, Pustaka perangkat lunak, perangkat lunak bebas dan Pustaka Python | ||||||
---|---|---|---|---|---|---|---|
Versi pertama | 14 Februari 2006[1] | ||||||
Versi stabil | |||||||
Genre | Object-relational mapping | ||||||
Lisensi | MIT License[2] | ||||||
| |||||||
| |||||||
SQLAlchemy merupakan sekumpulan perangkat lunak dengan sumber terbuka untuk SQL dan Pemetaan Objek Relasional (object-relational mapper disingkat dengan ORM) untuk bahasa pemrograman Python. Aplikasi ini dirilis dengan menggunakan Lisensi MIT.
Deskripsi
[sunting | sunting sumber]SQLAlchemy berprinsip bahwa database relasional dapat dianggap seperti sekumpulan objek karena skalanya yang semakin besar. Selain itu kinerja dari sebuah database juga mulai menjadi perhatian.
Atas alasan ini maka pola pemetaan data (seperti Hibernate pada bahasa Java) kemudian menjadi pilihan untuk diadopsi ke dalam SQLAlchemy.[6] Namun pengguna tetap dapat menggunakan sintaks deklaratif dengan menggunakan plugin yang disediakan.[7]
Sejarah
[sunting | sunting sumber]SQLAlchemy dirilis pertama sekali pada bulan Februari 2006.[8] Saat ini SQLAlchemy menjadi salah satu alat bantu yang paling banyak digunakan di dalam komunitas Python.
Contoh
[sunting | sunting sumber]Contoh berikut mewakili hubungan n-ke-1 dengan mengambil contoh kasus: film dan sutradaranya.
Definisi skema
[sunting | sunting sumber]Membuat kelas dan tabel di dalam database:
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relation, sessionmaker
Base = declarative_base()
class Movie(Base):
__tablename__ = 'movies'
id = Column(Integer, primary_key=True)
title = Column(String(255), nullable=False)
year = Column(Integer)
directed_by = Column(Integer, ForeignKey('directors.id'))
director = relation("Director", backref='movies', lazy=False)
def __init__(self, title=None, year=None):
self.title = title
self.year = year
def __repr__(self):
return "Movie(%r, %r, %r)" % (self.title, self.year, self.director)
class Director(Base):
__tablename__ = 'directors'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False, unique=True)
def __init__(self, name=None):
self.name = name
def __repr__(self):
return "Director(%r)" % (self.name)
engine = create_engine('dbms://user:pwd@host/dbname')
Base.metadata.create_all(engine)
Penyisipan data
[sunting | sunting sumber]Perintah berikut dapat digunakan untuk menyisipkan hubungan antara sutradara dan film dengan menggunakan salah satu entitas:
Session = sessionmaker(bind=engine)
session = Session()
m1 = Movie("Robocop", 1987)
m1.director = Director("Paul Verhoeven")
d2 = Director("George Lucas")
d2.movies = [Movie("Star Wars", 1977), Movie("THX 1138", 1971)]
try:
session.add(m1)
session.add(d2)
session.commit()
except:
session.rollback()
Query
[sunting | sunting sumber]alldata = session.query(Movie).all()
for somedata in alldata:
print somedata
Query berikut akan dibuat oleh SQLAlchemy ke DBMS:
SELECT movies.id, movies.title, movies.year, movies.directed_by, directors.id, directors.name
FROM movies LEFT OUTER JOIN directors ON directors.id = movies.directed_by
Keluaran atau hasil:
Movie('Robocop', 1987L, Director('Paul Verhoeven'))
Movie('Star Wars', 1977L, Director('George Lucas'))
Movie('THX 1138', 1971L, Director('George Lucas'))
Jika pengaturan lazy=True
(bawaan) diaktifkan maka SQLAlchemy akan membuat query untuk mendapatkan daftar film. Bila diperlukan maka akan mengambil nama sutradara yang sesuai. Lihat contoh berikut:
SELECT movies.id, movies.title, movies.year, movies.directed_by
FROM movies
SELECT directors.id, directors.name
FROM directors
WHERE directors.id = %s
Referensi
[sunting | sunting sumber]- ^ "Download - SQLAlchemy". SQLAlchemy. Diakses tanggal 21 February 2015.
- ^ "zzzeek / sqlalchemy / source / LICENSE". BitBucket. Diakses tanggal 21 February 2015.
- ^ "Releases - sqlalchemy/sqlalchemy". Diakses tanggal 3 Maret 2021 – via GitHub.
- ^ Mike Bayer is the creator of SQLAlchemy and Mako Templates for Python.
- ^ Interview Mike Bayer SQLAlchemy #pydata #python
- ^ in The architecture of open source applications
- ^ Declarative
- ^ http://decisionstats.com/2015/12/29/interview-mike-bayer-sqlalchemy-pydata-python/
- Catatan
- Gift, Noah (12 Aug 2008). "Using SQLAlchemy". Developerworks. IBM. Diakses tanggal 8 Feb 2011.
- Rick Copeland, Essential SQLAlchemy, O'Reilly, 2008, ISBN 0-596-51614-2