Kami memerlukan beberapa variabel global untuk proyek ini. Salah satunya akan mengatur objek baris yang dapat kita akses dari mana saja dalam kode, dan yang lainnya akan menyimpan jumlah baris dalam database. Dengan begitu, kita dapat mencegah program melewati jumlah total baris dalam tabel dan menabrak kita
Temukan dua baris ini dalam kode Anda
file_name = "default. png"
jalur = db_config. PHOTO_DIRECTORY + nama_berkas
Di baris setelah dua baris ini, atur kedua variabel ini
baris = Tidak ada
num_of_rows = Tidak ada
Kata kunci Tidak ada melakukan apa yang Anda harapkan - tidak menyimpan nilai dalam variabel
Sekarang atur fungsi di bagian atas kode Anda. Yang ini
def load_database_results()
Kami ingin mengembalikan nilai Boolean dari fungsi ini yang akan memberi tahu kami apakah database berhasil dimuat atau tidak. Jadi tambahkan saja kata kunci return untuk saat ini
def load_database_results()
kembali
Bagian atas kode Anda akan terlihat seperti ini
Saat menghubungkan ke database MySql, Anda perlu menentukan nama server (host), nama pengguna dan kata sandi, dan database yang ingin Anda sambungkan. Kami dapat menambahkan pengaturan ini di file db_config kami
Buka file db_config Anda. Seharusnya ada variabel PHOTO_DIRECTORY Anda di sana. Tepat di bawahnya, atur empat variabel berikut
DB_SERVER = "localhost"
DB_USER = "akar"
DB_PASS = "kata sandi"
DB = "Karyawan"
Kata-kata dalam huruf kapital hanyalah nama variabel yang kami buat. Anda dapat memanggil mereka sesuatu yang lain, jika Anda mau. Namun, nilai-nilai yang masuk ke dalamnya mungkin perlu diubah. DB_SERVER bagi kami adalah localhost. Ini adalah default saat menyiapkan MySql. Angka (dalam tanda kutip) "127. 0. 0. 1" juga akan berfungsi menggantikan localhost. Jika Anda mengatur di server yang berbeda, Anda harus mengetikkan detailnya di sini
Nama pengguna dan kata sandi default untuk MySql biasanya root untuk keduanya. Tetapi pada beberapa sistem, Anda mungkin perlu mengubah kata sandi menjadi hanya string kosong (ketikkan dua tanda kutip tunggal tanpa spasi di antaranya). Tetapi nama pengguna dan kata sandi yang Anda masukkan saat menginstal MySql harus masuk ke sini. Kami menggunakan root dan kata sandi yang sangat mudah ditebak untuk detail kami. Tak perlu dikatakan, jangan gunakan ini pada sistem produksi, yang akan dapat diakses oleh dunia luar. Ganti root dan kata sandi dengan detail Anda sendiri
Variabel DB memegang nama database kami, yaitu Karyawan. File db_config Anda akan terlihat seperti ini (tetapi dengan nama pengguna dan kata sandi Anda sendiri menggantikan milik kami)
Sekarang kembali ke fungsi load_database_results Anda di file db_main. Kami akan menambahkan mencoba .. kecuali blok. Jika kami tidak dapat masuk, kami akan menampilkan kotak pesan yang mengatakan alasannya. Tambahkan mencoba .. kecuali bagian pertama
def load_database_results():try:
except pymysql.InternalError as e:
messagebox.showinfo("Connection Error", e)
return
def load_database_results()
mencoba
kecuali pymysql. Kesalahan Internal sebagai e
kotak pesan. showinfo("Kesalahan Koneksi", e)
kembali
Pengecualiannya adalah pymysql. Kesalahan Internal sebagai e. InternalError adalah kesalahan bawaan yang sudah dimiliki perpustakaan pymysql. Kesalahan apa pun ini disimpan dalam variabel yang disebut e. Ini kemudian ditampilkan di kotak pesan
Sebagai bagian percobaan, kami ingin mencoba dan terhubung ke server dan database. Tambahkan yang berikut ini di bagian coba
con = pymysql. terhubung(Host=db_config. DB_SERVER,
pengguna=db_config. DB_USER,
kata sandi = db_config. DB_PASS,
basis data = db_config. DB)
Jadi kami menggunakan pustaka pymysql, yang memiliki metode bernama connect. Di antara tanda kurung penghubung, kami memiliki empat parameter. host, user, password, dan database. Nilai untuk parameter ini berasal dari file db_config kami. Ketika fungsi load_database_results kami dijalankan, pymysql akan mencoba untuk terhubung ke database yang ditentukan menggunakan pengaturan lain yang kami sediakan. Jika tidak dapat terhubung, itu akan memunculkan kesalahan
Di bawah baris ini, tutup koneksi dengan
menipu. menutup()
Sekarang tambahkan kotak pesan
kotak pesan. showinfo("Terhubung ke Database", "Terhubung Oke")
Kode Anda akan terlihat seperti ini
Mari kita coba
Gulir ke bawah ke bagian bawah kode Anda dan temukan dua baris ini
tab_parent. pak(perluas=1, isi='keduanya')
membentuk. mainloop()
Tambahkan baris berikut sebelum mereka
load_database_results()
Dengan kata lain, panggil fungsi load_database_results menjelang akhir
Jalankan program Anda dan lihat apa yang terjadi
Jika semuanya berjalan dengan baik maka Anda akan melihat kotak dialog seperti ini
Jika program Anda macet, Anda mungkin telah melihat kesalahan seperti ini di jendela keluaran Anda
pymysql. berbuat salah. Kesalahan Operasional. (2003, "Tidak dapat terhubung ke server MySQL di 'localhost'. Tidak ada koneksi yang dapat dilakukan karena mesin target secara aktif menolaknya)"
Ini adalah OperationalError yang dapat Anda tangkap dengan menambahkan bagian pengecualian ke kode Anda
mencoba
kecuali pymysql. Kesalahan Internal sebagai e
kotak pesan. showinfo("Kesalahan Koneksi", e)
kecuali pymysql. OperationalError sebagai e
kotak pesan. showinfo("Kesalahan Koneksi", e)
Anda dapat menyalin dan menempelkan blok kecuali pertama Anda. Kemudian ubah InternalError menjadi OperationalError
Jalankan kembali program Anda. Jika Anda mendapatkan jenis kesalahan ini, kotak pesan sekarang akan ditampilkan, bukannya program Anda mogok
Alasan kesalahan ini adalah karena Anda mungkin belum memulai server. Jika Anda menggunakan Windows dan menggunakan Server WAMP, jalankan dari menu program. Tunggu ikon WAMP berubah menjadi hijau. Jika Anda menggunakan sistem Linux atau Mac, mulai server Anda dengan cara yang sama. (Pengguna Mac mungkin memiliki ikon server MAMP di folder Applications. Klik ini. )
Coba lagi, dan mudah-mudahan Anda akan melihat kotak pesan Connection OK
Jika masih gagal, maka periksa nama pengguna dan kata sandi Anda
PENGGUNA MAC
Satu masalah yang mungkin Anda miliki di Mac adalah dengan Kesalahan Operasional "Tidak dapat terhubung ke MySQL di Server localhost [Errno 61] Koneksi ditolak". Jika demikian, coba gunakan 127. 0. 0. 1 sebagai nama server dan menambahkan nilai parameter port sebagai 8889 (standarnya adalah 3306 dan ini dapat menyebabkan masalah pada Mac). Coba root dan root sebagai nama pengguna dan kata sandi. Jadi file db_config Anda adalah ini
DB_SERVER = "127. 0. 0. 1"
DB_PORT = 8889
DB_USER = "akar"
DB_PASS = "akar"
DB = "Karyawan"
Dan koneksi Anda merangkai ini
con = pymysql. terhubung(Host=db_config. DB_SERVER,
port=db_config. DB_PORT,
pengguna=db_config. DB_USER,
kata sandi = db_config. DB_PASS,
basis data = db_config. DB)
PENGGUNA LINUX
Jika Anda mendapatkan kesalahan yang ditakuti, "1049 Uknown database", tambahkan nomor port seperti di atas untuk Mac. Coba 8889 dulu lalu 8000. Jika Anda masih tidak senang, periksa di port mana MySQL Anda berada. Dari aplikasi Bitnami, klik tab Server Events
Periksa baris terakhir untuk nomor port. Gambar di atas memulai mysql pada port 8000
Selain kesalahan InternalError dan OperationalError, pymysql memiliki banyak kesalahan lainnya. Empat kode kesalahan lagi yang dapat Anda gunakan adalah
DataError
IntegrityError
NotSupportedError
ProgrammingError
Berikut beberapa kode yang menggunakan kesalahan di atas
Anda dapat mengubah kode agar cocok, jika diinginkan, karena merupakan praktik yang baik untuk menutupi kesalahan sebanyak mungkin
Sekarang kita memiliki koneksi, kita dapat menarik record dari tabel database. Kita akan melakukannya di pelajaran selanjutnya