Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Mengeksekusi SQL Mentah di SQLAlchemy

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan ODBC dengan Salesforce dan Okta Single Sign On (SSO)

  2. Bagaimana Cara Mengganti Nama Kolom di SQL?

  3. Ambang Pengoptimalan – Pengelompokan dan Penggabungan Data, Bagian 5

  4. 5 kesalahan umum yang harus dihindari saat menghapus data Anda

  5. Cara Menulis Klausa ORDER BY dengan Pengecualian menggunakan SQL