La prima opzione è il modo corretto per inserire i parametri della query nella query:è chiamata query parametrizzata . In questo caso, stai consentendo al driver del database di eseguire l'escape dei parametri della query, inserirli in modo sicuro nella query e gestire le conversioni di tipo Python-to-MySQL.
L'errore che ricevi significa che non è stato possibile convertire uno degli ID
, Record
, Latitude
, Longitude
o code
valori dei parametri a un tipo di database MySQL valido. Per essere precisi, guarda i tipi di variabili che hai pubblicato:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Il problema è con Latitude
e Longitude
- sono BeautifulSoup
NavigableString
istanze di classe - il convertitore MySQL ha difficoltà a capire come convertire un NavigableString
oggetto in un tipo MySQL valido. Convertili in stringhe in modo esplicito in anticipo:
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))