Opsi pertama adalah cara yang benar untuk memasukkan parameter kueri ke dalam kueri - ini disebut kueri berparameter . Dalam hal ini, Anda membiarkan driver database keluar dari parameter kueri, memasukkannya dengan aman ke dalam kueri, dan menangani konversi jenis Python-ke-MySQL.
Kesalahan yang Anda dapatkan berarti tidak dapat mengonversi salah satu ID
, Record
, Latitude
, Longitude
atau code
nilai parameter ke tipe database MySQL yang valid. Untuk lebih spesifik, lihat jenis variabel yang telah Anda posting:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Masalahnya ada pada Latitude
dan Longitude
- mereka adalah BeautifulSoup
NavigableString
class instance - konverter MySQL mengalami kesulitan dalam memahami cara mengonversi NavigableString
objek menjadi tipe MySQL yang valid. Konversikan ke string secara eksplisit sebelumnya:
update = """
INSERT INTO
myDB.newtable
(ID,Record,Latitude,Longitude,code)
VALUES
(%s,%s,%s,%s,%s)
"""
cursor2.execute(update, (ID, Record, str(Latitude), str(Longitude), code))