Comment faire pour imprimer toutes les colonnes de SQLAlchemy ORM
À l'aide de SQLAlchemy, je suis en train d'imprimer tous les attributs de chacun des modèles que j'ai d'une manière similaire à:
SELECT * from table;
Cependant, je voudrais faire quelque chose avec chacun des modèles de l'instance de l'information que je reçois. Jusqu'à présent, le meilleur que j'ai été en mesure de venir avec est:
for m in session.query(model).all():
print [getattr(m, x.__str__().split('.')[1]) for x in model.__table__.columns]
# additional code
Et cela va me donner ce que je cherche, mais c'est un assez rond-point de la façon de l'obtenir. J'ai été un peu en espérant pour un attribut, le long des lignes de:
m.attributes
# or
m.columns.values
Je sens que je suis en manque de quelque chose et il y a une bien meilleure manière de faire ceci. Je fais cela parce que je vais être de tout imprimer .Les fichiers CSV, et je ne veux pas avoir à spécifier les colonnes/attributs qui m'intéresse, je veux tout (il y a un grand nombre de colonnes dans un grand nombre de modèles à imprimer).
OriginalL'auteur mrmagooey | 2011-05-18
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à SQLAchemy de les métadonnées de réflexion fonctionnalité.
À l'aide de flacon de sqlalchemy ORM j'ai été en mesure d'obtenir les noms de colonne via le suivant: data_table.__table__.les colonnes
OriginalL'auteur Alexander Kiselev
C'est un vieux post, mais j'ai rencontré un problème avec la base de données des noms de colonnes ne correspond pas à la cartographié les noms des attributs de l'instance. Nous avons fini par aller avec ceci:
Espère que ça aide quelqu'un avec le même problème!
Merci!!!! Cela fonctionne parfaitement!
OriginalL'auteur Starktron
Bâtiment sur Rodney L réponse:
OriginalL'auteur KurtB
Sans doute le plus court de solution (voir le récent la documentation):
OriginalL'auteur Kostiantyn Ivashchenko
Je crois que c'est le moyen le plus facile:
EDIT: La réponse au-dessus de moi à l'aide de sqlalchemy.l'inspection.inspecter() semble être une meilleure solution.
pas aider..si nous avons plusieurs fonction définie selon le modèle, cette obtiendrez de ces fonction
OriginalL'auteur Fahad Yousuf
Mettre cela ensemble et trouvé utile:
Et puis:
Exemple de sortie
print(d)
:OU puis:
OriginalL'auteur jmunsch
Je suis à l'aide de SQL Alchimie v 1.0.14 sur Python 3.5.2
En supposant que vous pouvez vous connecter à un moteur avec create_engine(), j'ai été en mesure d'afficher toutes les colonnes à l'aide du code suivant. Remplacer "ma chaîne de connexion" et "mon nom de table" avec les valeurs appropriées.
la dernière ligne affiche uniquement les noms de colonnes de la déclaration précédente.
OriginalL'auteur FistOfFury
Vous pouvez être intéressé par ce que j'ai trouvé pour ce faire.
OriginalL'auteur Keith
Ou tout simplement les colonnes:
OriginalL'auteur Curtis Yallop
Je l'utiliser parce que c'est légèrement plus courte:
OriginalL'auteur rvl