OVH Cloud OVH Cloud

Eviter les doublon

12 réponses
Avatar
Boa Guy Serge
Bonjour
Je n'arrive pas =E0 =E9viter les enregistrement double(c'est =E0 dire
enregistrer deux fois le m=EAme enregistrement)
Voici mon code

cr.execute("SELECT DISTINCT code_client FROM production_client WHERE
numcontrat=3D%s AND type_souscri=3D%s" ,[id_contrat, type_sous])
clt =3D []
for t in cr.fetchall():
clt.append(t)
while len (clt) !=3D0:
try:
dernier =3D clt.pop()
except:
pass
else:
if dernier =3D=3D clt.append() :
raise osv.except_osv('Warning !', 'il exciste
d=E9j=E0!')

2 réponses

1 2
Avatar
Alain BARTHE
Boa Guy Serge wrote:
On 17 juil, 09:21, "Méta-MCI (MVP)"
wrote:
Bonjour !

Je souhaiterais, si possible, voir comment as tu fait.


Un optimiste.

Moi pas.


Un réaliste.

Perso, étant en ouakanss, je préfère aller me baigner.

@+
--
Michel Claveau



Voici mon code (mon objectif était d'éviter les enregistrement double
dans la base)


# Verification de la saisie d'un seul client dans la base (Eviter les
doublons)
cr.execute("SELECT code_clt FROM production_client WHERE
numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat,
type_sous,sit])
res = []
new = vals['code_clt']
[res.append(k[0]) for k in cr.fetchall()]
if len(res)==0:
return
super(production_client,self).create(cr,uid,vals,context=context)
else:
if new in res:
raise osv.except_osv('Error !', 'Le client existe
déjà!')

else:
return
super(production_client,self).create(cr,uid,vals,context=context)

Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci
Bruno



Et si tu integrais dans ta requete le code client dont tu veux verifier
s'il existe deja.

Ca t'eviterai de faire un algo trop complexe en python.

cli = vals ['code_clt']

cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND
numcontrat = %s AND type_souscri = %s AND situation = %s", [cli,
id_contrat, type_sous, sit])

if len (cr.fetchall()) > 0:
raise osv.except_osv ("Error !", "client existe deja")
else:
super (production_client, self).create (...)

Ca me semble plus simple.
Avatar
Bruno Desthuilliers
Alain BARTHE a écrit :
Boa Guy Serge wrote:
On 17 juil, 09:21, "Méta-MCI (MVP)"
wrote:
Bonjour !

Je souhaiterais, si possible, voir comment as tu fait.


Un optimiste.

Moi pas.


Un réaliste.

Perso, étant en ouakanss, je préfère aller me baigner.

@+
--
Michel Claveau



Voici mon code (mon objectif était d'éviter les enregistrement double
dans la base)


# Verification de la saisie d'un seul client dans la base (Eviter les
doublons)
cr.execute("SELECT code_clt FROM production_client WHERE
numcontrat=%s AND type_souscri=%s AND situation=%s" ,[id_contrat,
type_sous,sit])
res = []
new = vals['code_clt']
[res.append(k[0]) for k in cr.fetchall()]
if len(res)==0:
return
super(production_client,self).create(cr,uid,vals,context=context)
else:
if new in res:
raise osv.except_osv('Error !', 'Le client existe
déjà!')

else:
return
super(production_client,self).create(cr,uid,vals,context=context)

Merci pour vos conseil surtout à Bruno qui me tire les oreilles merci
Bruno



Et si tu integrais dans ta requete le code client dont tu veux verifier
s'il existe deja.

Ca t'eviterai de faire un algo trop complexe en python.

cli = vals ['code_clt']

cr.execute ("SELECT code_clt FROM production WHERE code_clt = %s AND
numcontrat = %s AND type_souscri = %s AND situation = %s", [cli,
id_contrat, type_sous, sit])

if len (cr.fetchall()) > 0:



cursor.execute retourne le nombre de rows affectés - donc dans le cas
d'une requête "select", le nombre de rows qui matchent.

if cr.execute(sql, (arg1, argn)):
raise YourException("your message")

*mais* si le schema était correct, il ne serait de toutes façon pas
possible de créer des doublons puisqu'il y aurait une clé unique sur les
champs concernés.
1 2