SQLAlchemy


SQLAlchemy
Penulis asliMichael Bayer[1][2]
Rilis awalFebruari 14, 2006; 20 tahun lalu (2006-02-14)[3]
Templat:Kotak info perangkat lunak/simple
Ditulis dalamPython
Sistem operasiCross-platform
JenisObject-relational mapping
LisensiMIT License[4]
Situs webwww.sqlalchemy.org Sunting ini di Wikidata
Repositori
Mike Bayer berbicara tentang SQLAlchemy di PyCon 2012

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

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

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

Contoh berikut mewakili hubungan n-ke-1 dengan mengambil contoh kasus: film dan sutradaranya.

Definisi skema

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

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

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

Lihat pula

Referensi

  1. ^ Mike Bayer is the creator of SQLAlchemy and Mako Templates for Python.
  2. ^ Interview Mike Bayer SQLAlchemy #pydata #python
  3. ^ "Download - SQLAlchemy". SQLAlchemy. Diakses tanggal 21 February 2015.
  4. ^ "zzzeek / sqlalchemy / source / LICENSE". BitBucket. Diakses tanggal 21 February 2015.
  5. ^ "Releases - sqlalchemy/sqlalchemy". Diakses tanggal 3 Maret 2021 – via GitHub.
  6. ^ in The architecture of open source applications
  7. ^ Declarative
  8. ^ http://decisionstats.com/2015/12/29/interview-mike-bayer-sqlalchemy-pydata-python/
Catatan

Pranala luar

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.