mysql-connector-python adalah konektor Python yang disediakan oleh MySQL. Konektor 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 instance tersebut. Untuk informasi lebih lanjut, lihat Aktifkan fitur kompatibilitas MySQL.
Alamat IP klien Anda telah ditambahkan ke daftar putih instance Lindorm Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih.
Prosedur
Instal versi 8.0.11 mysql-connector-python. Anda juga dapat menjalankan perintah
pip install mysql-connector-python==8.0.11untuk menginstalnya.Buat koneksi dan konfigurasikan parameter.
connection = mysql.connector.connect(host='<Titik akhir LindormTable untuk MySQL.>', port=33060, user='<Nama pengguna>', passwd='<Kata sandi>', database='<Nama basis data>') cursor = connection.cursor(prepared=True)Parameter
Parameter
Deskripsi
host
Lindorm Wide Table SQL Address. Hapus tanda titik dua di akhir dan nomor port
:33060. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Lihat alamat koneksi.PentingJika aplikasi Anda diterapkan pada instance Elastic Compute Service (ECS) dan instance ECS berada dalam VPC yang sama dengan instance Lindorm, kami sarankan Anda terhubung ke instance Lindorm melalui VPC. Jika tidak, hubungkan ke instance Lindorm melalui Internet. Untuk terhubung ke instance Lindorm melalui Internet, Anda harus mengaktifkan titik akhir publik dari instance tersebut. Untuk informasi lebih lanjut, lihat Aktifkan LindormSearch.
port
Port protokol MySQL untuk LindormTable. Nilainya tetap
33060.user
Jika Anda lupa password pengguna, Anda dapat mengubahnya di sistem manajemen kluster LindormTable. Untuk informasi selengkapnya, lihat Ubah password pengguna.
passwd
database
Nama basis data yang ingin Anda sambungkan. Secara default, klien Anda terhubung ke basis data bernama default.
Gunakan SQL LindormTable untuk melakukan operasi di LindormTable. Blok kode berikut memberikan contoh tentang cara menggunakan SQL LindormTable untuk 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
Anda dapat menggunakan mysql-connector-python untuk terhubung ke LindormTable dari Python dalam dua mode:
Mode koneksi langsung: cocok untuk operasi tunggal atau akses yang jarang dilakukan. Koneksi dibuat dan ditutup untuk setiap operasi.
Mode kolam koneksi: cocok untuk akses frekuensi tinggi karena meningkatkan performa dan mengurangi overhead sumber daya melalui penggunaan ulang koneksi.
Mode koneksi langsung
Kode berikut memberikan contoh:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json
import mysql.connector
# Buka koneksi database.
# host: Titik akhir untuk menghubungkan ke LindormTable menggunakan protokol MySQL.
# port: Port untuk menghubungkan ke LindormTable menggunakan protokol MySQL. Nilai default adalah 33060.
# user: Username untuk menghubungkan ke LindormTable.
# passwd: Password yang sesuai dengan username tersebut.
# database: 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. Atur 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)
# Jalankan satu pernyataan insert.
cursor.execute(sql_upsert, (1, 1, '1'))
cursor.execute(sql_upsert, (2, 2, json.dumps({"key": "value2"})))
# Lakukan penulisan batch untuk memasukkan dua baris data 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 dalam tabel.
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 ingin Anda tulis berisi karakter khusus, seperti tanda kutip ganda (") dalam string JSON, gunakan pengaturan parameter prepared=True, seperti pada contoh di atas. Hal ini mencegah penambahan karakter escape pada data yang ditulis ke Lindorm.
Mode kolam koneksi
Kode berikut memberikan contoh:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json
import mysql.connector
from mysql.connector import pooling
# Buat kolam koneksi.
# pool_name: Nama kolam koneksi.
# pool_size: Ukuran kolam koneksi. Ini adalah jumlah maksimum koneksi dalam kolam. Sesuaikan nilai ini sesuai kebutuhan.
# host: Titik akhir untuk menghubungkan ke LindormTable menggunakan protokol MySQL.
# port: Port untuk menghubungkan ke LindormTable menggunakan protokol MySQL. Nilai default adalah 33060.
# user: Username untuk menghubungkan ke LindormTable.
# passwd: Password yang sesuai dengan username tersebut.
# database: 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 koneksi.
connection = connection_pool.get_connection()
# Buat cursor. Atur 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)
# Jalankan satu pernyataan insert.
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'))
# Lakukan penulisan batch untuk memasukkan tiga baris data 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 dalam tabel.
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 koneksi, bukan ditutup secara permanen.
connection.close()