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))