Bonjour à tous
J'ai eu récemment un souci en voulant copier un objet perso via copy.deepcopy lorsque cet objet contenait lui-même une connexion vers une bdd Postgres via psycopg2. La connexion est perdue dans l'objet copié
Exemple minimaliste
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #!/usr/bin/env python # -*- coding: utf-8 -*- import psycopg2 import copy class cToto(object): def __init__(self): print "init" self.bdd=psycopg2.connect( host="localhost", dbname="ma_bdd", user="postgres", ) def __str__(self): return "%s" % repr(self) def copy(self): other=copy.deepcopy(self) #other.bdd=self.bdd return other # cToto() a=cToto() print a, type(a), a.bdd b=a.copy() print b, type(b), b.bdd
b est un objet copié à partir de a. Ben lorsque j'affiche b.bdd, j'ai une erreur de segmentation.
En revanche, si je décommente la ligne qui copie la connexion bdd, je n'ai plus d'erreur.
Je voulais savoir si quelqu'un avait déjà vu un truc similaire et s'il avait une explication.
Merci
PS: je suis sous Python v2.6.6 sur une Debian Squeeze
Partager