Den første mulighed er den korrekte måde at indsætte forespørgselsparametre i forespørgslen på - det kaldes en parameteriseret forespørgsel . I dette tilfælde lader du databasedriveren undslippe forespørgselsparametrene, indsætte dem sikkert i forespørgslen og håndtere konverteringer af Python-til-MySQL-typen.
Fejlen du får betyder, at den ikke kunne konvertere et af ID
, Record
, Latitude
, Longitude
eller code
parameterværdier til en gyldig MySQL-databasetype. For at være specifik, se de variabeltyper, du har indsendt:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Problemet er med Latitude
og Longitude
- de er BeautifulSoup
's NavigableString
klasseforekomster - MySQL-konverteren har problemer med at forstå, hvordan man konverterer en NavigableString
objekt til en gyldig MySQL-type. Konverter dem eksplicit til strenge på forhånd:
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))