Bonjour,

Je fais une amélioration d'un de mes programmes de calcul qui fait un certain nombre de prédiction sur des liaisons d'ARN en biologie et j'aimerais en corriger un de ses défaut à savoir que tout était stocké dans un xml pour écrire cette fois dans une base de données, moins limitée sur la quantité de données.

Mais j'ai un gros problème, la base de donnée reste désespérément vide. Je n'arrive pas à remplir la moindre table, bien qu'elle soit correctement appelée. Voici une partie du code, ce qui s’exécute en premier, lors de l'appel de l'objet, à savoir création de la base de donnée, remplissage de la table rna puis de la table soft.

Si vous avez des idées, je suis preneur parce que j'ai cherché partout sans solution. Et les personnes qui ont eu le même problème que moi, ont préféré abandonné.

Code : 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
class sqlite_manager:
    def __init__(self, result):
        """
        """
        self.db_path=result+"mycarn_result.db"
 
    def createSQLdb(self):
        """
        """
        #Delete previous database
        if(os.path.isfile(self.db_path)):
            os.remove(self.db_path)
        #Connect database
        self.connectDB()
        #Create RNA database
        self.cur.executescript("""
            create table rna (rnaid integer primary key, name varchar unique, length integer, type integer);
            create table soft (softid integer primary key, name varchar);
            create table interact (interactid integer primary key, softid REFERENCES soft(softid), srnaid REFERENCES rna(rnaid), mrnaid REFERENCES rna(rnaid));
            create table contact (contactid integer primary key, interactid REFERENCES interact(interactid), srna_begin integer, srna_end integer, mrna_begin integer, mrna_end integer, score real);
        """)
        #Commit database
        self.conn.commit()
        #Disconnect database
        self.disconnectDB()
 
    def connectDB(self):
        """
        Connect to the database
        """
        self.conn=sqlite3.connect(self.db_path,check_same_thread=False,isolation_level=None)
        #connect
        self.cur=self.conn.cursor()
 
    def disconnectDB(self):
        """
        Disconnect the database
        """
        #close cursor 
        self.cur.close()
        #Close connection
        self.conn.close()
 
    def setSoft(self,name):
        """
        """
        self.cur.execute("insert into soft(name) values(?)",(name,))
        lastrowid=self.cur.lastrowid
        self.conn.commit()
        return lastrowid
 
    def setRNA(self,RNA_inf, type):
        """
        """
        #Connect database
        self.connectDB()
        try:
            RNA_infReader=csv.reader(open(RNA_inf, 'rb'), delimiter='\t')
            #passage de l'entete
            RNA_infReader.next()
            for i in RNA_infReader:
                self.cur.execute("insert into rna(name,length,type) values(?,?,?)",(i[0],int(i[1]),type))
            self.conn.commit()
        except IOError:
            sys.exit("Error : can not open file %s"%RNA_inf)    
        #Disconnect database
        self.disconnectDB()