První možností je správný způsob vložení parametrů dotazu do dotazu – nazývá se parametrizovaný dotaz . V tomto případě necháte ovladač databáze uniknout parametrům dotazu, bezpečně je vložit do dotazu a zpracovat převody typu Python do MySQL.
Chyba, kterou dostáváte, znamená, že nebylo možné převést jedno z ID , Record , Latitude , Longitude nebo code hodnoty parametrů na platný typ databáze MySQL. Chcete-li být konkrétní, podívejte se na typy proměnných, které jste zveřejnili:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Problém je s Latitude a Longitude - jsou to BeautifulSoup NavigableString
instance třídy – konvertor MySQL má potíže s pochopením toho, jak převést NavigableString objekt do platného typu MySQL. Převeďte je na řetězce explicitně předem:
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))