Det första alternativet är det korrekta sättet att lägga in frågeparametrar i frågan - det kallas en parameteriserad fråga . I det här fallet låter du databasdrivrutinen undkomma frågeparametrarna, infoga dem säkert i frågan och hantera konverteringar av Python-till-MySQL-typ.
Felet du får betyder att det inte kunde konvertera ett av ID
, Record
, Latitude
, Longitude
eller code
parametervärden till en giltig MySQL-databastyp. För att vara specifik, se de variabeltyper du har lagt upp:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Problemet är med Latitude
och Longitude
- de är BeautifulSoup
s NavigableString
klassinstanser - MySQL-omvandlaren har svårt att förstå hur man konverterar en NavigableString
objekt till en giltig MySQL-typ. Konvertera dem till strängar uttryckligen i förväg:
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))