Mysql
 sql >> Base de données >  >> RDS >> Mysql

Échec du traitement des paramètres de format avec mysql.connector en Python

La première option est la bonne façon de mettre les paramètres de requête dans la requête - c'est ce qu'on appelle une requête paramétrée . Dans ce cas, vous laissez le pilote de base de données échapper aux paramètres de requête, les insérer en toute sécurité dans la requête et gérer les conversions de type Python vers MySQL.

L'erreur que vous obtenez signifie qu'il n'a pas pu convertir l'un des ID , Record , Latitude , Longitude ou code valeurs de paramètre à un type de base de données MySQL valide. Pour être précis, consultez les types de variables que vous avez publiés :

ID        <type 'unicode'> 
Record    <type 'unicode'>
Latitude  <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code      <type 'unicode'>

Le problème vient de Latitude et Longitude - ils sont BeautifulSoup NavigableString instances de classe - le convertisseur MySQL ayant des difficultés à comprendre comment convertir une NavigableString objet dans un type MySQL valide. Convertissez-les explicitement en chaînes au préalable :

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