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

R

richard

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...
 
J

Jan Burgy

richard said:
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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top