Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Comment acceder a un champ de bdd par son nom, (ou acces a un tuplede tuples)

Reply
Thread Tools

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

 
 
richard
Guest
Posts: n/a
 
      09-07-2004
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
 
Reply With Quote
 
 
 
 
Jan Burgy
Guest
Posts: n/a
 
      09-07-2004
richard <(E-Mail Removed)> wrote in message news:<chk0j9$10f$(E-Mail Removed)>...
> 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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Can't find par loader at C:/Perl/site/lib/PAR/Packer.pm line 101 Oliver Soeder Perl Misc 1 06-30-2007 02:32 PM
Can't find par loader at C:/Perl/site/lib/PAR/Packer.pm line 101. osoeder@gmx.de Perl Misc 0 06-07-2007 02:58 PM
acceder al datasource en el evento _ItemDataBound con XML jb ASP .Net 3 01-31-2007 10:59 AM
PAR, PAR::Packer smueller@cpan.org Perl Misc 1 12-01-2006 09:41 PM
message eradique par une regle emise par SPE interscaneManager@fr.ch Python 0 08-21-2003 07:47 PM



Advertisments