pytony
Profilo di
Nome | pytony |
---|---|
Indirizzo email | n/a |
Messaggi | 2 |
-
- 2019-06-19 15:31:27
- 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
-
- 2019-06-19 12:46:11
- 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.