Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Falha ao processar parâmetros de formato com mysql.connector em Python


A primeira opção é a maneira correta de colocar parâmetros de consulta na consulta - ela é chamada de consulta parametrizada . Nesse caso, você está permitindo que o driver de banco de dados escape dos parâmetros de consulta, insira-os com segurança na consulta e lide com as conversões de tipo Python para MySQL.

O erro que você está recebendo significa que não foi possível converter um dos ID , Record , Latitude , Longitude ou code valores de parâmetro para um tipo de banco de dados MySQL válido. Para ser específico, veja os tipos de variáveis ​​que você postou:
ID        <type 'unicode'> 
Record    <type 'unicode'>
Latitude  <class 'bs4.element.NavigableString'>
Longitude <class 'bs4.element.NavigableString'>
code      <type 'unicode'>

O problema é com o Latitude e Longitude - eles são BeautifulSoup NavigableString instâncias de classe - o conversor MySQL tendo dificuldades em entender como converter um NavigableString objeto em um tipo MySQL válido. Converta-os em strings explicitamente de antemão:
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))