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