Terhubung ke database MySQL dengan Python

Database


Menghubungkan ke database MySQL dengan Python dapat membingungkan. Ada beberapa driver koneksi yang berbeda, dan tidak semuanya berfungsi dengan baik dengan sistem operasi yang berbeda. Selain itu, mengaktifkan SSL bisa menjadi tantangan.

Artikel ini membahas empat metode yang dapat Anda gunakan untuk menghubungkan aplikasi Python ke MySQL. Contoh-contoh ini menggunakan PlanetScale, platform database tanpa server untuk MySQL, tetapi database sebenarnya yang Anda sambungkan adalah opsional.

Metode koneksi berikut akan dibahas:

Jika Anda memerlukan database gratis untuk menguji koneksi Anda, PlanetScale adalah pilihan yang bagus. PlanetScale dibangun di atas Vitess dan menyediakan alur kerja percabangan yang sudah dikenal untuk menguji dan menerapkan perubahan skema.

Vitess dibuat pada tahun 2010 untuk memecahkan masalah penskalaan di YouTube. Sejak itu, proyek open source terus berkembang dan sekarang membantu beberapa perusahaan seperti Slack dan Square mengelola kebutuhan skala data mereka yang sangat besar.

Daftar akun untuk mendapatkan database 5GB gratis.

Buat database

Setelah Anda berada di dasbor:

  1. Klik “Buat Database Baru” di dasbor ikhtisar organisasi Anda.
  2. Beri nama database Anda.
  3. Pilih area dari menu tarik-turun.
  4. Klik Buat Basis Data.

Basis data Anda dibuat dengan a main Cabang pengembangan adalah tempat Anda dapat membuat perubahan pada desain dan bila sudah siap, mempromosikannya ke produksi.

Dapatkan kredensial koneksi

Untuk membuat kredensial koneksi:

  1. Klik “Hubungkan” di halaman ikhtisar basis data Anda.
  2. Dari menu tarik-turun “Hubungkan Dengan”, pilih “Python”.
  3. Buat salinan kredensial .env file di folder program Python Anda.

Untuk memastikan koneksi yang aman, PlanetScale menggunakan sertifikat dari Certificate Authority (CA), yang merupakan bagian dari root sistem yang tersedia di hampir semua platform. Anda harus menentukan jalur ke sertifikat CA tepercaya Anda saat menyambungkan ke database. Perhatikan bahwa jalur ini bergantung pada platform Anda. Berikut adalah daftar jalur umum di berbagai sistem operasi dan distribusi.

Jika Anda menyalin kredensial dari dasbor PlanetScale, ini seharusnya sudah dilakukan untuk Anda, karena kami mendeteksi sistem operasi Anda secara otomatis.

Jika Anda menggunakan sistem Windows, Anda harus mengunduh sertifikat root dan mengarahkannya ke lokasinya dengan opsi konfigurasi yang benar untuk driver yang Anda gunakan.

ini mysqlclient Paket ini adalah salah satu paket Python paling populer untuk MySQL. Ini termasuk MySQLdb modul, antarmuka ke MySQL yang menyediakan API database Python.

Mulailah dengan menginstal mysqlclient. Anda dapat melakukan ini dengan dua cara:

  1. Gunakan installer dari situs resmi MySQL yang cocok dengan sistem operasi dan versi SQL yang Anda jalankan.
  2. menggunakan pip Untuk menginstalnya:

Di Linux, Anda mungkin perlu menginstal header dan library pengembangan Python3 dan MySQL sebelum instalasi mysqlclient:

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

Setelah Anda memiliki mysqlclient Setelah terinstal, Anda dapat terhubung ke database menggunakan kode berikut:

import os
import MySQLdb # import the MySQLdb module
from dotenv import load_dotenv
load_dotenv()

# Create the connection object
connection = MySQLdb.connect(
    host=os.getenv("HOST"),
    user=os.getenv("USERNAME"),
    passwd=os.getenv("PASSWORD"),
    db=os.getenv("DATABASE"),
    ssl_mode="VERIFY_IDENTITY",
    ssl={
        'ca': os.getenv("SSL_CERT")
    }
)

# Create cursor and use it to execute SQL command
cursor = connection.cursor()
cursor.execute("select @@version")
version = cursor.fetchone()

if version:
    print('Running version: ', version)
else:
    print('Not connected.')

Perhatikan bahwa Anda harus menginstal python-dotenv dan masuk os Modul untuk mengakses kredensial basis data .env mengajukan.

Catatan untuk pengguna Windows: mysqlclient Pemasang tidak mendukung file roda ssl-mode. Karena Anda ingin memastikan koneksi database aman, sebaiknya gunakan driver lain seperti mysql-connector-python.

Contoh ini menggunakan koneksi untuk mengambil versi SQL database dan kemudian menutup koneksi.

Metode koneksi lainnya hampir sama dengan contoh ini. Sintaks serupa ini berasal dari spesifikasi Python Database API (PEP 249), yang mendorong koordinasi antara modul Python yang digunakan untuk mengakses database.

Modul MySQL Connector/Python adalah driver resmi yang didukung oleh Oracle untuk menghubungkan MySQL melalui Python. Antarmuka sepenuhnya Python, sementara mysqlclient Itu ditulis dalam bahasa C. Ini juga mandiri, artinya tidak memerlukan pustaka klien MySQL atau modul Python apa pun di luar pustaka standar.

Perhatikan bahwa MySQL Connector/Python tidak mendukung metode otentikasi server MySQL lama, yang berarti bahwa versi MySQL sebelum 4.1 tidak akan berfungsi.

Mulailah dengan menginstal mysql-connector-python Modul. Disarankan untuk menginstalnya menggunakan pip:

pip install mysql-connector-python

Setelah instalasi, gunakan kode berikut untuk terhubung ke MySQL:

import os
from dotenv import load_dotenv
from mysql.connector import Error
import mysql.connector

load_dotenv()

connection = mysql.connector.connect(
host=os.getenv("HOST"),                                     
database=os.getenv("DATABASE"),
user=os.getenv("USERNAME"),
password=os.getenv("PASSWORD"),
ssl_ca=os.getenv("SSL_CERT")
)

try:
    if connection.is_connected():
        cursor = connection.cursor()
    cursor.execute("select @@version ")
    version = cursor.fetchone()
    if version:
        print('Running version: ', version)
    else:
        print('Not connected.')
except Error as e:
    print("Error while connecting to MySQL", e)
finally:
    connection.close()

Paket PyMySQL adalah konektor lain yang dapat Anda gunakan untuk menghubungkan Python ke MySQL. Jika Anda mencari kecepatan, ini adalah pilihan yang baik karena lebih cepat dari itu mysql-connector-python.

Anda dapat menginstalnya menggunakan pip:

Kemudian gunakan kode koneksi berikut:

from dotenv import load_dotenv
import pymysql
import os
load_dotenv()
connection = pymysql.connect(
    host=os.getenv("HOST"),
    database=os.getenv("DATABASE"),
    user=os.getenv("USERNAME"),
    password=os.getenv("PASSWORD"),
    ssl_ca=os.getenv("SSL_CERT")
)
cursor = connection.cursor()
cursor.execute("select @@version ")
version = cursor.fetchone()
if version:
    print('Running version: ', version)
else:
    print('Not connected.')
connection.close()

ini aiomysql Library tersebut digunakan untuk mengakses database MySQL dari framework asyncio. Selain asinkron, kode koneksinya mirip dengan PyMySQL. Perhatikan bahwa menggunakan aiomysql Membutuhkan Python 3.7+ dan PyMySQL.

untuk digunakan aiomysqlpertama instal modul asinkron:

Kemudian, instal aiomysql Menggunakan:

Anda kemudian dapat terhubung ke MySQL menggunakan kode berikut:

import os
import asyncio
import aiomysql
import ssl

from dotenv import load_dotenv
load_dotenv()

ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ctx.load_verify_locations(cafile=os.getenv("SSL_CERT"))

loop = asyncio.get_event_loop()

async def connect_db():
   connection = await aiomysql.connect(
       host=os.getenv("HOST"),
       port=3306,
       user=os.getenv("USERNAME"),
       password=os.getenv("PASSWORD"),
       db=os.getenv("DATABASE"),
       loop=loop,
       ssl=ctx
   )
   cursor = await connection.cursor()
   await cursor.execute("select @@version")
   version = await cursor.fetchall()
   print('Running version: ', version)
   await cursor.close()
   connection.close()
loop.run_until_complete(connect_db())

Persistensi data dalam database adalah salah satu fitur umum dari perangkat lunak aplikasi. Seperti Python, sebagian besar bahasa pemrograman mendukung koneksi dan interaksi dengan berbagai database.

Tutorial ini membahas hubungan antara Python dan MySQL. Kami telah membagikan empat konektor umum berbeda yang dapat Anda gunakan dan mengujinya di database PlanetScale menggunakan SSL untuk keamanan – langkah penting, karena mencegah serangan man-in-the-middle. Kami memeriksa cara kerja konektor untuk setiap metode koneksi dan menunjukkan kepada Anda kode yang diperlukan untuk menerapkannya. Sekarang setelah Anda mengerjakan ikhtisar praktis ini, Anda siap untuk menghubungkan database MySQL ke aplikasi Python.



Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.