mysql-connector-python adalah connector Python yang disediakan oleh MySQL. Connector ini tidak bergantung pada pustaka fungsi standar bahasa C dan lebih mudah digunakan. Topik ini menjelaskan cara menggunakan mysql-connector-python untuk terhubung ke LindormTable saat Anda mengembangkan aplikasi dengan Python.
Prasyarat
Python 3.8 atau versi yang lebih baru telah diinstal.
Fitur kompatibilitas MySQL telah diaktifkan untuk instans tersebut. Untuk informasi selengkapnya, lihat Aktifkan fitur kompatibilitas MySQL.
Alamat IP klien Anda telah ditambahkan ke daftar putih instans Lindorm Anda. Untuk informasi selengkapnya, lihat Konfigurasikan daftar putih.
Prosedur
Instal mysql-connector-python versi 8.0.15 dengan menjalankan perintah
pip install mysql-connector-python==8.0.15.Buat koneksi dan konfigurasikan parameter.
connection = mysql.connector.connect(host='<LindormTable endpoint for MySQL.>', port=33060, user='<Username>', passwd='<Password>', database='<Database name>') cursor = connection.cursor(prepared=True)Parameter
Parameter
Deskripsi
host
Lindorm Wide Table SQL Address tanpa tanda titik dua dan nomor port (
:33060). Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Lihat titik akhir.PentingJika aplikasi Anda dideploy pada instans Elastic Compute Service (ECS) dan instans ECS tersebut berada dalam VPC yang sama dengan instans Lindorm, kami menyarankan agar Anda terhubung ke instans Lindorm melalui VPC. Jika tidak, hubungkan ke instans Lindorm melalui Internet. Untuk terhubung ke instans Lindorm melalui Internet, Anda harus mengaktifkan titik akhir publik instans tersebut. Untuk informasi selengkapnya, lihat Aktifkan LindormSearch.
port
Port yang digunakan untuk terhubung ke LindormTable menggunakan MySQL. Nilainya tetap
33060.user
Jika Anda lupa kata sandi, Anda dapat mengatur ulang melalui sistem manajemen kluster LindormTable. Untuk informasi selengkapnya, lihat Ubah Kata Sandi Anda.
passwd
database
Nama database yang ingin Anda hubungkan. Secara default, client Anda terhubung ke database bernama default.
Anda dapat menggunakan sintaks SQL tabel lebar dengan LindormTable untuk operasi seperti membuat tabel.
sql_create_table = ("create table if not exists test_python(c1 integer, c2 integer, c3 varchar, primary key(c1))") print(sql_create_table) cursor.execute(sql_create_table)
Contoh kode
Driver mysql-connector-python mendukung dua mode untuk terhubung ke LindormTable:
Mode koneksi langsung: Cocok untuk operasi satu kali atau akses yang jarang dilakukan. Koneksi baru dibuka dan ditutup untuk setiap operasi.
Mode kolam koneksi: Cocok untuk akses yang sering dilakukan karena menggunakan kembali koneksi untuk meningkatkan performa dan mengurangi overhead.
Mode koneksi langsung
Berikut ini adalah potongan kode contoh:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json
import mysql.connector
# Buat koneksi ke database.
# Atur host ke titik akhir LindormTable untuk MySQL.
# Atur port ke port yang digunakan untuk terhubung ke LindormTable menggunakan MySQL, yaitu 33060 secara default.
# Atur user ke username yang digunakan untuk terhubung ke LindormTable.
# Atur passwd ke password yang digunakan untuk terhubung ke LindormTable.
# Atur database ke nama database di LindormTable.
connection = mysql.connector.connect(host='ld-bp1hn6yq0yb34****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com', port=33060,user='root', passwd='test',database='default')
# Buat cursor dan tentukan prepared=True.
cursor = connection.cursor(prepared=True)
# Buat tabel.
sql_create_table = ("create table if not exists test_python(c1 integer, c2 integer, c3 varchar, primary key(c1))")
print(sql_create_table)
cursor.execute(sql_create_table)
# Masukkan data.
sql_upsert = "upsert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_upsert)
# Masukkan baris tunggal.
cursor.execute(sql_upsert, (1, 1, '1'))
cursor.execute(sql_upsert, (2, 2, json.dumps({"key": "value2"})))
# Masukkan dua baris sekaligus.
sql_upsert_batch = ("upsert into test_python(c1, c2, c3) values(?, ?, ?), (?, ?, ?)")
cursor.execute(sql_upsert_batch, (3, 3, '3' , 4, 4, json.dumps({"key": "value4"})))
# Hapus data.
sql_delete = "delete from test_python where c1 = ?"
print(sql_delete)
cursor.execute(sql_delete, (3,))
# Ubah data.
sql_update = "upsert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_update)
cursor.execute(sql_update, (1, 2, '2'))
# Kueri data tertentu.
sql_select = "select * from test_python where c1 = ?"
print(sql_select)
cursor.execute(sql_select, (4,))
rows = cursor.fetchall()
print(rows)
# Kueri semua data.
sql_select_all = "select * from test_python"
print(sql_select_all)
cursor.execute(sql_select_all)
rows = cursor.fetchall()
print(rows)
# Tutup cursor.
cursor.close()
# Tutup koneksi.
connection.close()Jika string yang Anda tulis berisi karakter khusus, seperti tanda kutip ganda ("), gunakan prepared=True (seperti pada contoh di atas) untuk mencegah data yang ditulis ke LindormTable mengalami escape yang salah.
Mode kolam koneksi
Berikut ini adalah contoh kode:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json
import mysql.connector
from mysql.connector import pooling
# Buat kolam koneksi.
# Atur pool_name ke nama kolam koneksi.
# Atur pool_size ke jumlah maksimum koneksi dalam kolam. Sesuaikan nilai ini berdasarkan workload Anda.
# Atur host ke titik akhir LindormTable untuk MySQL.
# Atur port ke port yang digunakan untuk terhubung ke LindormTable menggunakan MySQL, yaitu 33060 secara default.
# Atur user ke username yang digunakan untuk terhubung ke LindormTable.
# Atur password ke password yang digunakan untuk terhubung ke LindormTable.
# Atur database ke nama database di LindormTable.
connection_pool = pooling.MySQLConnectionPool(
pool_name="mypool",
pool_size=20,
host='11.166.XX.X',
port=33060,
user='root',
password='root',
database='default',
)
# Ambil koneksi dari kolam.
connection = connection_pool.get_connection()
# Buat cursor dan tentukan prepared=True.
cursor = connection.cursor(prepared=True)
# Hapus tabel.
sql_drop_table = "drop table if exists test_python"
print(sql_drop_table)
cursor.execute(sql_drop_table)
# Buat tabel.
sql_create_table = ("create table test_python(c1 integer, c2 integer, c3 varchar, primary key(c1))")
print(sql_create_table)
cursor.execute(sql_create_table)
# Masukkan baris tunggal.
sql_upsert = "insert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_upsert)
cursor.execute(sql_upsert, (1, 1, '1'))
cursor.execute(sql_upsert, (2, 2, '2'))
# Masukkan tiga baris sekaligus.
sql_upsert_batch = "insert into test_python(c1, c2, c3) values(?, ?, ?), (?, ?, ?), (?, ?, ?)"
cursor.execute(sql_upsert_batch, (3, 3, '3', 4, 4, '4', 5, 5, '5'))
# Hapus data.
sql_delete = "delete from test_python where c1 = ?"
print(sql_delete)
cursor.execute(sql_delete, (3,))
# Ubah data.
sql_update = "upsert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_update)
cursor.execute(sql_update, (1, 2, '2'))
# Kueri data tertentu.
sql_select = "select * from test_python where c1 = ?"
print(sql_select)
cursor.execute(sql_select, (4,))
rows = cursor.fetchall()
print(rows)
# Kueri semua data.
sql_select_all = "select * from test_python"
print(sql_select_all)
cursor.execute(sql_select_all)
rows = cursor.fetchall()
print(rows)
# Tutup cursor.
cursor.close()
# Tutup koneksi. Koneksi dikembalikan ke kolam, bukan ditutup secara permanen.
connection.close()