Bagaimana cara menghubungkan mysql dengan python?

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

Artikel ini mencakup empat metode yang dapat Anda gunakan untuk menghubungkan aplikasi Python Anda ke MySQL. Contoh ini akan menggunakan PlanetScale, platform database tanpa server untuk MySQL, tetapi database sebenarnya yang Anda sambungkan bersifat arbitrer

Metode koneksi berikut akan dibahas

  • sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    0
  • sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    _1
  • sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    _2
  • sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    _3

Jika Anda memerlukan database gratis untuk menguji koneksi Anda, PlanetScale adalah pilihan yang sangat baik. PlanetScale dibangun di atas Vitess dan memberi Anda alur kerja percabangan yang familier untuk menguji dan menerapkan perubahan skema

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

Mendaftar akun untuk mendapatkan database 5GB gratis

Buat basis data

Setelah Anda berada di dasbor PlanetScale

  1. Klik "Buat database baru" di dasbor ikhtisar organisasi Anda
  2. Beri nama basis data Anda
  3. Pilih wilayah dari dropdown
  4. Klik Buat basis data

Basis data Anda akan dibuat dengan cabang pengembangan

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
4. Anda dapat membuat perubahan skema di sini dan mempromosikannya ke produksi setelah Anda siap

Dapatkan kredensial koneksi

Untuk menghasilkan kredensial koneksi

  1. Klik "Hubungkan" pada halaman ikhtisar basis data Anda
  2. Pilih "Python" dari dropdown "Connect With".
  3. Salin kredensial ke file
    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    _5 di folder aplikasi Python Anda

Untuk memastikan koneksi yang aman, PlanetScale menggunakan sertifikat dari Otoritas Sertifikat (CA) yang merupakan bagian dari root sistem yang tersedia di hampir semua platform. Anda harus menentukan jalur ke sertifikat CA yang Anda percayai saat menghubungkan ke database. Perhatikan bahwa jalur ini bergantung pada platform Anda. di berbagai sistem operasi dan distribusi

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

Jika Anda menggunakan sistem Windows, Anda perlu mengunduh sertifikat root, lalu arahkan ke lokasinya dengan opsi konfigurasi yang benar untuk driver yang Anda gunakan

Paket

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0 adalah salah satu paket Python paling populer untuk MySQL. Ini berisi modul
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
_7, antarmuka ke MySQL yang menyediakan API database Python

Mulailah dengan menginstal

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0. Anda dapat melakukannya dengan dua cara

  1. Gunakan penginstal dari situs resmi MySQL yang sesuai dengan OS dan versi SQL yang Anda jalankan
  2. Gunakan
    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    _9 untuk menginstalnya

Terminal

pip install mysqlclient

Di Linux, Anda mungkin perlu memasang header dan pustaka pengembangan Python3 dan MySQL sebelum memasang

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

Terminal

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

Setelah

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0 diinstal, Anda dapat terhubung ke database menggunakan kode berikut

Piton

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.')

Catatan, Anda harus menginstal

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.')
_2 dan mengimpor modul
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.')
3 untuk mengakses kredensial database di file
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
5

Catatan untuk pengguna Windows. Instalasi

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0 dari wheel file tidak mendukung
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.')
6. Karena Anda ingin memastikan koneksi database aman, sebaiknya gunakan driver lain, seperti mysql-connector-python

Contoh ini menggunakan koneksi untuk mengambil versi SQL dari database lalu menutup koneksi

Metode koneksi lainnya memiliki sintaks yang hampir sama dengan contoh ini. Sintaks serupa ini berasal dari spesifikasi API basis data Python (PEP 249) yang mendorong konsistensi di antara modul Python yang digunakan untuk mengakses basis data

Modul MySQL Connector/Python adalah driver resmi yang didukung Oracle untuk menghubungkan MySQL melalui Python. Konektor sepenuhnya Python, sedangkan

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
0 ditulis dalam C. Itu juga mandiri, artinya tidak memerlukan pustaka klien MySQL atau modul Python apa pun di luar pustaka standar

Perhatikan bahwa Konektor MySQL/Python tidak mendukung metode otentikasi server MySQL lama, yang berarti versi MySQL sebelum 4. 1 tidak bekerja

Mulailah dengan memasang modul

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
_1. Disarankan untuk menginstalnya menggunakan pip

Terminal

pip install mysql-connector-python

Setelah diinstal, gunakan kode berikut untuk terhubung ke MySQL

Piton

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. Ini pilihan yang bagus jika Anda mencari kecepatan, karena lebih cepat dari

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

Anda dapat menginstalnya menggunakan pip dengan

Terminal

pip install PyMySQL

Kemudian, gunakan kode koneksi berikut

Piton

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()

Pustaka

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
3 digunakan untuk mengakses database MySQL dari kerangka kerja asyncio. Selain asinkron, kode koneksi mirip dengan PyMySQL. Perhatikan bahwa menggunakan
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
_3 membutuhkan Python 3. 7+ dan PyMySQL

Untuk menggunakan

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
_3, instal modul asinkron terlebih dahulu dengan

Terminal

pip install asyncio

Kemudian, instal

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

Terminal

pip install aiomysql

Anda kemudian dapat terhubung ke MySQL menggunakan kode berikut

Piton

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())

Data yang bertahan dalam database adalah salah satu fitur umum dari aplikasi perangkat lunak. Seperti Python, sebagian besar bahasa pemrograman mendukung koneksi dan interaksi dengan database yang berbeda

Tutorial ini mengeksplorasi menghubungkan Python ke MySQL. Kami 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 meninjau cara kerja konektor untuk setiap metode koneksi dan menunjukkan kepada Anda kode yang diperlukan untuk menjalankannya. Sekarang setelah Anda mengerjakan ikhtisar langsung ini, Anda siap untuk menghubungkan database MySQL ke aplikasi Python