Die erste Option ist die richtige Art, Abfrageparameter in die Abfrage einzufügen – sie wird als parametrisierte Abfrage bezeichnet . In diesem Fall lassen Sie den Datenbanktreiber die Abfrageparameter maskieren, sie sicher in die Abfrage einfügen und die Python-zu-MySQL-Typkonvertierungen handhaben.
Der Fehler, den Sie erhalten, bedeutet, dass eine der ID
nicht konvertiert werden konnte , Record
, Latitude
, Longitude
oder code
Parameterwerte in einen gültigen MySQL-Datenbanktyp. Um genau zu sein, sehen Sie sich die Variablentypen an, die Sie gepostet haben:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Das Problem liegt bei Latitude
und Longitude
- sie sind BeautifulSoup
's NavigableString
Klasseninstanzen - der MySQL-Konverter hat Schwierigkeiten zu verstehen, wie ein NavigableString
konvertiert wird Objekt in einen gültigen MySQL-Typ. Konvertieren Sie diese vorher explizit in Strings:
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))