sql >> Database >  >> RDS >> Mysql

Mislukte verwerking van formaatparameters met mysql.connector in Python

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



  1. Niet te verwaarlozen verschil in uitvoeringsplan met Oracle bij gebruik van jdbc Timestamp of Date

  2. toegang geweigerd voor laadgegevensbestand in MySQL

  3. Soorten tabelrelaties in MS Access

  4. MySQL MOD() Functie – Voer een Modulo-bewerking uit in MySQL