Je n'ai pas trouvé d'information à ce sujet dans la documentation, mais comment puis-je obtenir une liste des tables créées dans SQLAlchemy ?
J'ai utilisé la méthode des classes pour créer les tableaux.
Je n'ai pas trouvé d'information à ce sujet dans la documentation, mais comment puis-je obtenir une liste des tables créées dans SQLAlchemy ?
J'ai utilisé la méthode des classes pour créer les tableaux.
Je cherchais quelque chose comme ça :
from sqlalchemy import create_engine
eng = create_engine('mysql+pymysql://root:password@localhost:3306', pool_recycle=3600)
q = eng.execute('SHOW TABLES')
available_tables = q.fetchall()
Il fait un execute et retourne toutes les tables.
mettre à jour :
Postgres :
eng = create_engine('postgresql+psycopg2://root:password@localhost/
q = eng.execute('SELECT * FROM pg_catalog.pg_tables')
Je suis en train de résoudre le même problème et j'ai trouvé ce post. Après quelques essais, je suggère d'utiliser la méthode ci-dessous pour lister toutes les tables : (mentionné par zerocog)
metadata = MetaData()
metadata.reflect(bind=engine)
for table in metadata.sorted_tables:
print(table)
C'est utile pour la manipulation directe des tables et je pense que c'est recommandé.
Et utilisez le code ci-dessous pour obtenir les noms des tables :
for table_name in engine.table_names():
print(table_name)
"metadata.tables" fournit un Dict pour le nom de la table et l'objet Table. qui serait également utile pour une recherche rapide.
Refléter toutes les tables à la fois vous permet également de récupérer les noms de tables cachés. J'ai créé quelques tables temporaires et elles sont apparues avec
meta = MetaData()
meta.reflect(bind=myengine)
for table in reversed(meta.sorted_tables):
print table
Référence http://docs.sqlalchemy.org/en/latest/core/reflection.html
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.