Obtenir des informations de colonne cx_Oracle lorsque la table est vide?
Question
Je travaille sur un un gestionnaire pour le module d'enregistrement python. Qui se connecte essentiellement à une base de données Oracle.
J'utilise cx_Oracle, et quelque chose que je ne sais pas comment sont les valeurs de la colonne lorsque la table est vide.
cursor.execute('select * from FOO')
for row in cursor:
# this is never executed because cursor has no rows
print '%s\n' % row.description
# This prints none
row = cursor.fetchone()
print str(row)
row = cursor.fetchvars
# prints useful info
for each in row:
print each
La sortie est la suivante:
None
<cx_Oracle.DATETIME with value [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None
, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None
, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]>
<cx_Oracle.STRING with value [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]>
Vous voyez maintenant les données var je peux voir les types de données, et leur taille (compter nones?) Mais c'est pas le nom de la colonne.
Comment puis-je prendre?
La solution
Je pense que l'attribut description
peut être Qu'est-ce que tu cherches. Ceci retourne une liste de tuples qui décrivent les colonnes des données renvoyées. Il fonctionne très heureux s'il n'y a pas de lignes retournées, par exemple:
>>> import cx_Oracle >>> c = cx_Oracle.connect("username", "password") >>> cr = c.cursor() >>> cr.execute("select * from dual where 1=0") <__builtin__.OracleCursor on <cx_Oracle.Connection to user username@local>> >>> cr.description [('DUMMY', <type 'cx_Oracle.STRING'>, 1, 1, 0, 0, 1)]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow