De eerste optie is de juiste manier om queryparameters in de query in te voeren - het wordt een geparametriseerde query genoemd. . In dit geval laat u het databasestuurprogramma ontsnappen aan de queryparameters, deze veilig in de query invoegen en de conversies van het Python-naar-MySQL-type afhandelen.
De foutmelding die u krijgt, betekent dat het een van de ID
. niet kon converteren , Record
, Latitude
, Longitude
of code
parameterwaarden naar een geldig MySQL-databasetype. Om specifiek te zijn, bekijk de variabele typen die je hebt gepost:
ID <type 'unicode'>
Record <type 'unicode'>
Latitude <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code <type 'unicode'>
Het probleem is met Latitude
en Longitude
- ze zijn BeautifulSoup
's NavigableString
class instances - de MySQL-converter heeft problemen met het converteren van een NavigableString
object in een geldig MySQL-type. Converteer ze vooraf expliciet naar 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))