Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler bei der Verarbeitung von Formatparametern mit mysql.connector in Python

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