SQLAlchemy adalah alat SQL yang dibuat dengan Python yang memberi pengembang banyak fitur canggih untuk merancang dan mengelola database berkinerja tinggi.
Kami akan secara singkat mengeksplorasi cara menggunakan SQLAlchemy dan kemudian mempelajari lebih dalam tentang cara mengeksekusi pernyataan SQL mentah dari dalam kenyamanan bahasa domain Python.
Menggunakan SQLAlchemy
Seperti semua pustaka Python, mulailah dengan menginstal SQLAlchemy. Setelah terinstal, kita dapat memulai kesenangan dengan Python.
Selanjutnya, impor sqlalchemy
sendiri, lalu impor beberapa modul sehingga kita dapat dengan mudah mengakses mesin database SQLAlchemy:
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy import inspect
Selain create_engine
, kami juga mengimpor sejumlah modul tambahan yang kami perlukan untuk membuat tabel baru. Sebelum kita membahasnya, pastikan SQLAlchemy telah diinstal, diimpor, dan berfungsi dengan memanggil .__version__
seperti ini:
print sqlalchemy.__version__
Out[*]: 1.0.9
Membuat Tabel
Kami akan menggunakan fungsionalitas dasar SQLAlchemy yang merupakan Bahasa Ekspresi SQL untuk membuat beberapa metadata
yang akan berisi sejumlah modul (atau objek) terkait yang mendefinisikan book
baru kami tabel basis data:
metadata = MetaData()
books = Table('book', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('primary_author', String),
)
engine = create_engine('sqlite:///bookstore.db')
metadata.create_all(engine)
Di bagian atas kita mendefinisikan metadata
, lalu kami meneruskannya ke Table()
metode, di mana kami memberi tabel kami nama book
. Di dalamnya, kami mendefinisikan setiap kolom, bersama dengan atribut penting seperti tipe data dan primary_key
.
Setelah tabel kita didefinisikan dan diasosiasikan dengan metadata
objek, kita perlu membuat mesin database yang dapat kita hubungkan. Ini dilakukan dengan menggunakan create_engine
fungsi.
engine = create_engine('sqlite:///bookstore.db')
Untuk contoh kita, kita akan menggunakan SQLite
sederhana basis data. Anda juga dapat menggunakan string koneksi untuk mesin lain seperti MySQL atau PostgreSQL. Berikut adalah contoh sintaks untuk membuat mesin untuk PostgreSQL:
engine = create_engine('postgresql://user:password@host/database')
Dengan mesin yang dibuat, sekarang kita perlu menggunakan .create_all()
metode metadata
kami objek dan berikan engine
koneksi ke sana, yang secara otomatis akan menyebabkan SQLAlchemy menghasilkan tabel kami untuk kami, seperti yang terlihat di atas.
Dengan kelengkapan itu, kita bisa menggunakan tabel sesuai keinginan kita. Dalam contoh sederhana ini, kita hanya akan menggunakan inspect
modul untuk melihat kolom dan memverifikasi tabel kami berhasil dibuat:
inspector = inspect(engine)
inspector.get_columns('book')
Out[*]:
[{'autoincrement': True,
'default': None,
'name': u'id',
'nullable': False,
'primary_key': 1,
'type': INTEGER()},
{'autoincrement': True,
'default': None,
'name': u'title',
'nullable': True,
'primary_key': 0,
'type': VARCHAR()},
{'autoincrement': True,
'default': None,
'name': u'primary_author',
'nullable': True,
'primary_key': 0,
'type': VARCHAR()}]
Benar saja, menggunakan .get_columns()
metode untuk book
kami tabel, kami melihat tiga kolom kami dihasilkan.
Menjalankan Pernyataan SQL
Dengan dasar-dasarnya, sekarang kita dapat mencoba mengeksekusi beberapa SQL mentah menggunakan SQLAlchemy.
Menggunakan Modul Teks
Salah satu metode untuk mengeksekusi SQL mentah adalah dengan menggunakan text
modul, atau Textual SQL
. Cara yang paling mudah dibaca untuk menggunakan text
adalah mengimpor modul, lalu setelah terhubung ke engine
, tentukan text
String pernyataan SQL sebelum menggunakan .execute
untuk menjalankannya:
from sqlalchemy.sql import text
with engine.connect() as con:
data = ( { "id": 1, "title": "The Hobbit", "primary_author": "Tolkien" },
{ "id": 2, "title": "The Silmarillion", "primary_author": "Tolkien" },
)
statement = text("""INSERT INTO book(id, title, primary_author) VALUES(:id, :title, :primary_author)""")
for line in data:
con.execute(statement, **line)
Di sini kita memasukkan dua record ke dalam database kita dengan menggunakan text()
-pernyataan yang ditentukan.
Menggunakan Metode eksekusi
Metode alternatif adalah melewati menggunakan text()
dan berikan string SQL mentah ke .execute()
metode. Misalnya, di sini kita akan menggunakan .execute()
untuk melihat catatan baru yang kami sisipkan di atas:
with engine.connect() as con:
rs = con.execute('SELECT * FROM book')
for row in rs:
print row
Out[*]:
(4, u'The Hobbit', u'Tolkien')
(5, u'The Silmarillion', u'Tolkien')
Di sana kita memilikinya! Metode sederhana dan efektif untuk mengeksekusi pernyataan SQL mentah di SQLAlchemy.