Profilo di pytony

Nome pytony
Indirizzo email n/a
Messaggi2
  • Re: psycopg2 UPDATE errore 'argument formats can't be mixed'
    Forum >> Programmazione Python >> Database
    Risolto.

    con tutti qui parametri mi si incrociano gli occhi, mancavano 2 parentesi vicino al simbolo %
    default_ipv4_broadcast = %vdefault_ipv4_broadcast)s, default_ipv4_netmask = %vdefault_ipv4_netmask)s

  • psycopg2 UPDATE errore 'argument formats can't be mixed'
    Forum >> Programmazione Python >> Database
    Salve,

    in uno script sono alla fase di update di una tabella con il db Postgresql e la libreria psycopg2 dove mi restituisce l'errore come in oggetto.

    I valori che uso sono in una lista che passo alla funzione di update che sono gli stessi che uso nella funzione insert. Creo la query SQL parametrizzata in una variabile, i parametri in una variabile 'valori come dizionario. I valori del dizionario sono sia stringhe, interi e date. Ho provato ad escludere le date per capire se non coincideva il formato ma l'errore resta.


    Per più chiarezza metto un po di codice:

    def update(dati_device, cur):
        if settings.debug:
            print("sono in update")
        valori = {'vhostname':dati_device[1], 'vdefault_ipv4_address':dati_device[2], 'vdefault_ipv4_mac':dati_device[3], 'vdefault_ipv4_broadcast':dati_device[4], 'vdefault_ipv4_netmask':dati_device[5], 'vdefault_ipv4_gateway':dati_device[6], 'vprocessor':dati_device[7], 'vprocessor_core':dati_device[8], 'vmemtotal_mb':dati_device[9], 'vdevices_sda_model':dati_device[10], 'vdevices_sda_size':dati_device[11], 'vdevices_sdb_model':dati_device[12], 'vdevices_sdb_size':dati_device[13], 'vdistribution':dati_device[14], 'vdistribution_release':dati_device[15], 'vdistribution_version':dati_device[16], 'vdomain':dati_device[17], 'vsystem_vendor':dati_device[18], 'vproduct_version':dati_device[19], 'vbios_date': dati_device[20],'varchitecture':dati_device[21], 'vdate':dati_device[22],'vid_macchina': dati_device[0]}
        if settings.debug:
            print(valori)
        sql = """Update """ + settings.tabella + """ SET hostname = %(vhostname)s, default_ipv4_address = %(vdefault_ipv4_address)s, default_ipv4_mac = %(vdefault_ipv4_mac)s, default_ipv4_broadcast = %vdefault_ipv4_broadcast)s, default_ipv4_netmask = %vdefault_ipv4_netmask)s, default_ipv4_gateway = %(vdefault_ipv4_gateway)s, processor = %(vprocessor)s, processor_core = %(vprocessor_core)s, memtotal_mb = %(vmemtotal_mb)s, devices_sda_model = %(vdevices_sda_model)s, devices_sda_size = %(vdevices_sda_size)s, devices_sdb_model = %(vdevices_sdb_model)s, devices_sdb_size = %(vdevices_sdb_size)s, distribution = %(vdistribution)s, distribution_release = %(vdistribution_release)s, distribution_version = %(vdistribution_version)s, domain = %(vdomain)s, system_vendor = %(vsystem_vendor)s, product_version = %(vproduct_version)s, bios_date = %(vbios_date)s, architecture = %(varchitecture)s, date = %(vdate)s WHERE id_macchina=%(vid_macchina)s;"""
        if settings.debug:
            print(sql)
        try:
            cur.execute(sql, valori)
        except (Exception, psycopg2.DatabaseError) as error:
            print(error)
    Grazie in anticipo.