Tùy chọn đầu tiên là cách chính xác để đặt các tham số truy vấn vào truy vấn - nó được gọi là truy vấn được tham số hóa . Trong trường hợp này, bạn đang cho phép trình điều khiển cơ sở dữ liệu thoát khỏi các tham số truy vấn, chèn chúng vào truy vấn một cách an toàn và xử lý các chuyển đổi loại Python-sang-MySQL.
Lỗi bạn gặp phải có nghĩa là nó không thể chuyển đổi một trong các ID
, Record
, Latitude
, Longitude
hoặc mã code
giá trị tham số cho một kiểu cơ sở dữ liệu MySQL hợp lệ. Để cụ thể, hãy xem các loại biến bạn đã đăng:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Vấn đề là với Latitude
và Longitude
- họ là BeautifulSoup
của NavigableString
phiên bản lớp - trình chuyển đổi MySQL gặp khó khăn trong việc hiểu cách chuyển đổi NavigableString
đối tượng thành một kiểu MySQL hợp lệ. Chuyển đổi chúng thành chuỗi một cách rõ ràng trước:
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))