Comment acceder a un champ de bdd par son nom, (ou acces a un tuplede tuples)

Discussion in 'Python' started by richard, Sep 7, 2004.

  1. richard

    richard Guest

    bonjour

    je me connecte à une base de données interbase/firebird en utilisant,
    KinterbasDB
    http://kinterbasdb.sourceforge.net/ pour ceux que ca interesse

    mais je pense que le probleme est le meme quel que soit la bdd

    j'aimerais acceder a un champs par sont nom plutot que par son index
    dans le record en cours, comme je fais maintenent

    la prop description du curseur renvoye le tuple de tuple suivant
    (('PATIENTID', <type 'str'>, 180, 180, 0, 0, True),
    ('ORIGINALPATIENTID', <type 'str'>, 60, 60, 0, 0, True), ('CENTERID',
    <type 'int'>, 11, 4, 0, 0, True), ('NAME', <type 'str'>, 452, 452, 0, 0,
    True), ('FIRSTNAME', <type 'str'>, 452, 452, 0, 0, True), ('BIRTH',
    <type 'int'>, 6, 2, 0, 0, True), ('SEXE', <type 'int'>, 6, 2, 0, 0,
    True), ('ENTRYDATE', <type 'DateTime'>, 10, 4, 0, 0, True), ('COMMENTS',
    <type 'str'>, 0, 8, 0, 2, True), ('LASTMODIFDATE', <type 'DateTime'>,
    10, 4, 0, 0, True), ('DEP', <type 'int'>, 6, 2, 0, 0, True),
    ('QUESTIOID', <type 'int'>, 11, 4, 0, 0, True), ('CREADATE', <type
    'DateTime'>, 22, 8, 0, 0, True))

    le row courant est lui un tuple simple:
    ('02-0000', None, 2, None, None, 1961, 1, <DateTime object for
    '2002-06-16 00:00:00.00' at 90c860>, 'sevrage effectu\xe9\x00\x00',
    <DateTime object for '2002-07-16 00:00:00.00' at 932f20>, None, 520,
    <DateTime object for '2004-07-05 00:00:00.00' at 91f4e0>)

    comment, par exemple, acceder au 3em element du tuple (en l'occurence le
    nombre 2) en utilisant le nom CENTERID qui est le premier element du
    3eme element du tuple qui decrit la strucure ?

    j'espere que je me suis fais comprendre

    merci d'avance...


    --
    http://www.rootsaka.com
    richard, Sep 7, 2004
    #1
    1. Advertising

  2. richard

    Jan Burgy Guest

    Re: Comment acceder a un champ de bdd par son nom, (ou acces a un tuple de tuples)

    richard <> wrote in message news:<chk0j9$10f$>...
    > bonjour
    >
    > je me connecte à une base de données interbase/firebird en utilisant,
    > KinterbasDB
    > http://kinterbasdb.sourceforge.net/ pour ceux que ca interesse
    >
    > mais je pense que le probleme est le meme quel que soit la bdd
    >
    > j'aimerais acceder a un champs par sont nom plutot que par son index
    > dans le record en cours, comme je fais maintenent
    >
    > la prop description du curseur renvoye le tuple de tuple suivant
    > (('PATIENTID', <type 'str'>, 180, 180, 0, 0, True),
    > ('ORIGINALPATIENTID', <type 'str'>, 60, 60, 0, 0, True), ('CENTERID',
    > <type 'int'>, 11, 4, 0, 0, True), ('NAME', <type 'str'>, 452, 452, 0, 0,
    > True), ('FIRSTNAME', <type 'str'>, 452, 452, 0, 0, True), ('BIRTH',
    > <type 'int'>, 6, 2, 0, 0, True), ('SEXE', <type 'int'>, 6, 2, 0, 0,
    > True), ('ENTRYDATE', <type 'DateTime'>, 10, 4, 0, 0, True), ('COMMENTS',
    > <type 'str'>, 0, 8, 0, 2, True), ('LASTMODIFDATE', <type 'DateTime'>,
    > 10, 4, 0, 0, True), ('DEP', <type 'int'>, 6, 2, 0, 0, True),
    > ('QUESTIOID', <type 'int'>, 11, 4, 0, 0, True), ('CREADATE', <type
    > 'DateTime'>, 22, 8, 0, 0, True))
    >
    > le row courant est lui un tuple simple:
    > ('02-0000', None, 2, None, None, 1961, 1, <DateTime object for
    > '2002-06-16 00:00:00.00' at 90c860>, 'sevrage effectu\xe9\x00\x00',
    > <DateTime object for '2002-07-16 00:00:00.00' at 932f20>, None, 520,
    > <DateTime object for '2004-07-05 00:00:00.00' at 91f4e0>)
    >
    > comment, par exemple, acceder au 3em element du tuple (en l'occurence le
    > nombre 2) en utilisant le nom CENTERID qui est le premier element du
    > 3eme element du tuple qui decrit la strucure ?
    >
    > j'espere que je me suis fais comprendre
    >
    > merci d'avance...


    Salut Richard,

    je fais quelque-chose de tres semblable. Mon idee est la suivante
    (attention, je tape tout de tete et je te laisse le soin de tester
    toi-meme):

    # d'abord il faut extraire une list de tous les noms:
    names = [ x[0] for x in cursor_description ]

    # ensuite tu bricoles un dictionnaire avec le row courant:
    row = dict(zip(names, current_row))

    # tu peux maintenant faire les acces suivants:
    center_id = row["CENTERID"]
    first_name = row["FIRSTNAME"]
    # etc...

    Un derniere remarque: la langue officielle de comp.lang.python est
    l'anglais. Tu auras donc beaucoup plus de succes si tu traduis tes
    messages avant de les envoyer...

    Bonne chance,

    Jan
    Jan Burgy, Sep 7, 2004
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    382
  2. PAR, PAR::Packer

    , Dec 1, 2006, in forum: Perl Misc
    Replies:
    1
    Views:
    215
    John Bokma
    Dec 1, 2006
  3. Replies:
    0
    Views:
    224
  4. Oliver Soeder
    Replies:
    1
    Views:
    243
  5. Jon Reyes
    Replies:
    18
    Views:
    228
    Mitya Sirenef
    Feb 19, 2013
Loading...

Share This Page