IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

base de données sqlite3 vide


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut base de données sqlite3 vide
    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()

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bon, je suis toujours bloqué. J'ai fait un petit script qui teste mon objet précédent et ça marche :
    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
     
    #!/usr/bin/python
    import os, sys
    sys.path.append(os.path.join(os.path.dirname(__file__),"../src/Mycarn/"))
    from sqlite_manager import *
     
    dbmanage=sqlite_manager("/home/***/workspace/temp/")
    dbmanage.createSQLdb()
    dbmanage.setRNA("/home/***/phd/Mycarn/result_real2/data/sRNA_seq_inf.txt",0)
    dbmanage.setRNA("/home/***/phd/Mycarn/result_real2/data/mRNA_seq_inf.txt",1)
    dbmanage.connectDB()
    a=dbmanage.cur.execute("select * from rna")
    #dbmanage.conn.commit()
    for i in a:
        print i
    dbmanage.disconnectDB()
    A tous les coups il y a problème du fait que le programme principal est parallélisé (via mpi4py)
    voilà le contenu d'un des fichier mRNA_seq_inf.txt d'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SeqName Length
    NC_000913_csgD  201
    NC_000913_cycA  201
    NC_000913_fur   201
    NC_000913_glmS  201
    NC_000913_hns   201
    NC_000913_iscS  201
    Je dois dire que je suis vraiment deçu par sqlite. Ça a l'air lent, ça ne retourne pas d'erreur. C'est peut être moi mais une erreur m'aurait bien aider ! Du coups, je vois pas comment m'en sortir....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    mea culpa, problème d'écrire sur le serveur. problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accèder à une base de données sqlite3 en code natif
    Par Viewtifulink dans le forum Android
    Réponses: 0
    Dernier message: 25/05/2012, 15h17
  2. Réponses: 3
    Dernier message: 21/04/2012, 11h35
  3. Base de donnée SQLite3
    Par TecknoPlay dans le forum Général Python
    Réponses: 1
    Dernier message: 15/04/2011, 18h19
  4. [MySQL] Listing des nom de ma base de donnée, champ vide qui apparaissent tout seul
    Par Nowwis dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 29/11/2009, 16h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo