Salah satu database yang paling populer adalah MySQL.
1.Instal Pengandar MySQL
2.Uji Konektor MySQL
3.Untuk menguji apakah instalasi berhasil, atau apakah Anda sudah menginstal "MySQL Connector", buat halaman Python dengan konten berikut:
demo_mysql_test.py:
import mysql.connector
4.Buat Koneksi
Mulailah dengan membuat koneksi ke database.
Gunakan nama pengguna dan kata sandi dari database MySQL Anda:
demo_mysql_connection.py:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
print(mydb)
Membuat Basis Data
Untuk membuat database di MySQL, gunakan pernyataan "CREATE DATABASE":
buat database bernama "mydatabase":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE mydatabase")
Anda dapat memeriksa apakah suatu database ada dengan membuat daftar semua database di sistem Anda dengan menggunakan pernyataan "SHOW DATABASES":
Kembalikan daftar database sistem Anda:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW DATABASES")
for x in mycursor:
print(x)
Coba sambungkan ke database "mydatabase":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
Membuat Tabel
Untuk membuat tabel di MySQL, gunakan pernyataan "CREATE TABLE".
Pastikan Anda menentukan nama database saat membuat koneksi
Buat tabel bernama "pelanggan":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
Kunci utama
Saat membuat tabel, Anda juga harus membuat kolom dengan kunci unik untuk setiap record.
Hal ini dapat dilakukan dengan mendefinisikan PRIMARY KEY.
Kami menggunakan pernyataan "INT AUTO_INCREMENT PRIMARY KEY" yang akan memasukkan nomor unik untuk setiap record. Mulai dari 1, dan bertambah satu untuk setiap record.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
Masukkan Ke dalam Tabel
Untuk mengisi tabel di MySQL, gunakan pernyataan "INSERT INTO".
Masukkan catatan ke dalam tabel "pelanggan":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record inserted.")
Sisipkan Beberapa Baris
Untuk menyisipkan beberapa baris ke dalam tabel, gunakan executemany()metode ini.
Parameter kedua dari executemany()metode ini adalah daftar tupel, yang berisi data yang ingin Anda masukkan:
Isi tabel "pelanggan" dengan data:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
('Peter', 'Lowstreet 4'),
('Amy', 'Apple st 652'),
('Hannah', 'Mountain 21'),
('Michael', 'Valley 345'),
('Sandy', 'Ocean blvd 2'),
('Betty', 'Green Grass 1'),
('Richard', 'Sky st 331'),
('Susan', 'One way 98'),
('Vicky', 'Yellow Garden 2'),
('Ben', 'Park Lane 38'),
('William', 'Central st 954'),
('Chuck', 'Main Road 989'),
('Viola', 'Sideway 1633')
]
mycursor.executemany(sql, val)
mydb.commit()
print(mycursor.rowcount, "was inserted.")
Dapatkan ID yang Dimasukkan
Anda bisa mendapatkan id baris yang baru saja Anda sisipkan dengan menanyakan objek kursor.
Masukkan satu baris, dan kembalikan ID:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("Michelle", "Blue Village")
mycursor.execute(sql, val)
mydb.commit()
print("1 record inserted, ID:", mycursor.lastrowid)
Pilih Dari Tabel
Untuk memilih dari tabel di MySQL, gunakan pernyataan "SELECT":
Pilih semua catatan dari tabel "pelanggan", dan tampilkan hasilnya:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Memilih Kolom
Untuk memilih hanya beberapa kolom dalam tabel, gunakan pernyataan "PILIH" diikuti dengan nama kolom:
Pilih hanya kolom nama dan alamat:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT name, address FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Menggunakan Metode Fetchone()
Jika Anda hanya tertarik pada satu baris saja, Anda bisa menggunakan fetchone()cara tersebut.
Metode ini fetchone()akan mengembalikan hasil baris pertama:
Ambil hanya satu baris:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchone()
print(myresult)
Pilih Dengan Filter
Saat memilih rekaman dari tabel, Anda bisa memfilter pilihan dengan menggunakan pernyataan "WHERE":
Pilih catatan yang beralamat "Park Lane 38": hasil:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address ='Park Lane 38'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Karakter Wildcard
Anda juga dapat memilih rekaman yang dimulai, disertakan, atau diakhiri dengan huruf atau frasa tertentu.
Gunakan % untuk mewakili karakter wildcard:
Pilih catatan yang alamatnya berisi kata "cara":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address LIKE '%way%'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Mencegah Injeksi SQL
Hal ini untuk mencegah injeksi SQL, yang merupakan teknik peretasan web umum untuk menghancurkan atau menyalahgunakan database Anda.
Modul mysql.connector memiliki metode untuk keluar dari nilai kueri:
Keluarkan nilai kueri dengan menggunakan %s metode placeholder:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address = %s"
adr = ("Yellow Garden 2", )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Sortir Hasilnya
Gunakan pernyataan ORDER BY untuk mengurutkan hasil dalam urutan menaik atau menurun.
Kata kunci ORDER BY mengurutkan hasil secara menaik secara default. Untuk mengurutkan hasil dalam urutan menurun, gunakan kata kunci DESC.
urutkan hasilnya berdasarkan abjad berdasarkan nama: hasil:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers ORDER BY name"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
PESANAN OLEH DESK
Gunakan kata kunci DESC untuk mengurutkan hasil dalam urutan menurun.
Urutkan hasilnya secara terbalik berdasarkan abjad berdasarkan nama:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers ORDER BY name DESC"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Hapus Catatan
Anda dapat menghapus catatan dari tabel yang sudah ada dengan menggunakan pernyataan "DELETE FROM":
Hapus semua catatan yang alamatnya adalah "Gunung 21":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "DELETE FROM customers WHERE address = 'Mountain 21'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")
Penting!: Perhatikan pernyataan: mydb.commit(). Perubahan diperlukan, jika tidak, tidak ada perubahan yang dilakukan pada tabel.
Perhatikan klausa WHERE dalam sintaks DELETE: Klausa WHERE menentukan record mana yang harus dihapus. Jika Anda menghilangkan klausa WHERE, semua catatan akan dihapus!
Mencegah Injeksi SQL
Hal ini untuk mencegah injeksi SQL, yang merupakan teknik peretasan web umum untuk menghancurkan atau menyalahgunakan database Anda.
Modul mysql.connector menggunakan placeholder %suntuk keluar dari nilai dalam pernyataan delete:
Keluarkan nilai dengan menggunakan %s metode placeholder:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "DELETE FROM customers WHERE address = %s"
adr = ("Yellow Garden 2", )
mycursor.execute(sql, adr)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")
Hapus Tabel
Anda dapat menghapus tabel yang ada dengan menggunakan pernyataan "DROP TABLE":
Hapus tabel "pelanggan":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "DROP TABLE customers"
mycursor.execute(sql)
Perbarui Tabel
Anda dapat memperbarui catatan yang ada dalam tabel dengan menggunakan pernyataan "UPDATE":
Timpa kolom alamat dari "Valley 345" menjadi "Canyon 123":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "record(s) affected")
Penting!: Perhatikan pernyataan: mydb.commit(). Perubahan diperlukan, jika tidak, tidak ada perubahan yang dilakukan pada tabel.
Perhatikan klausa WHERE dalam sintaks UPDATE: Klausa WHERE menentukan record mana yang harus diperbarui. Jika Anda menghilangkan klausa WHERE, semua catatan akan diperbarui!
Mencegah injeksi Sql
Hal ini untuk mencegah injeksi SQL, yang merupakan teknik peretasan web umum untuk menghancurkan atau menyalahgunakan database Anda.
Modul mysql.connector menggunakan placeholder %suntuk keluar dari nilai dalam pernyataan delete:
Keluarkan nilai dengan menggunakan %s metode placeholder:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "UPDATE customers SET address = %s WHERE address = %s"
val = ("Valley 345", "Canyon 123")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record(s) affected")
Batasi Hasilnya
Anda dapat membatasi jumlah rekaman yang dikembalikan dari kueri, dengan menggunakan pernyataan "LIMIT":
Pilih 5 catatan pertama di tabel "pelanggan":
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers LIMIT 5")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Mulai Dari Posisi Lain
Jika Anda ingin mengembalikan lima record, mulai dari record ketiga, Anda dapat menggunakan kata kunci "OFFSET":
Mulai dari posisi 3, dan kembalikan 5 catatan:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers LIMIT 5 OFFSET 2")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Bergabunglah dengan Dua Tabel atau Lebih
Anda dapat menggabungkan baris dari dua tabel atau lebih, berdasarkan kolom terkait di antara tabel tersebut, dengan menggunakan pernyataan GABUNG.
Misalkan Anda memiliki tabel "pengguna" dan tabel "produk":
pengguna
{ id: 1, name: 'John', fav: 154},
{ id: 2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}
produk
{ id: 154, name: 'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{ id: 156, name: 'Vanilla Dreams' }
Bergabunglah dengan pengguna dan produk untuk melihat nama produk favorit pengguna:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \
users.name AS user, \
products.name AS favorite \
FROM users \
INNER JOIN products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Catatan: Anda dapat menggunakan JOIN daripada INNER JOIN. Keduanya akan memberi Anda hasil yang sama.









