Melepaskan % dalam Pertanyaan MySQL daripada Python
Apabila menggunakan perpustakaan MySQLdb Python, menghadapi pengecualian "ValueError: aksara format tidak disokong" semasa melaksanakan pertanyaan dengan aksara "%" boleh mengecewakan. Ini kerana MySQL menganggap aksara "%" sebagai kad bebas dan mentafsirkannya sebagai sebahagian daripada pertanyaan dan bukannya sebagai literal.
Untuk menyelesaikan isu ini, dokumentasi mengesyorkan agar tidak menggunakan tanda "%" literal dalam rentetan pertanyaan diluluskan untuk melaksanakan(). Dengan menggunakan % berganda (%%), MySQL akan mengenali "%" sebagai aksara literal dan bukannya kad bebas.
Sebagai contoh, pertanyaan dalam soalan asal boleh diubah suai seperti berikut:
query = """SELECT DATE_FORMAT(date_time, '%%Y-%%m') AS dd FROM some_table WHERE some_col = %s AND other_col = %s;""" cur.execute(query, (pram1, pram2))
Dengan melepaskan tanda "%" literal, MySQL kini akan mengenali "Y" dan "m" sebagai aksara tertentu dalam rentetan DATE_FORMAT dan ralat akan menjadi dielakkan.
Atas ialah kandungan terperinci Bagaimana untuk Melarikan Watak '%' dalam Pertanyaan MySQL daripada Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!