7 ответов:
все таблицы собраны в
tablesатрибут объекта метаданных SQLAlchemy. Чтобы получить список имен этих таблиц:>>> metadata.tables.keys() ['posts', 'comments', 'users']если вы используете декларативное расширение, то вы, вероятно, не управляете метаданными самостоятельно. К счастью, метаданные все еще присутствуют в базовом классе,
>>> Base = sqlalchemy.ext.declarative.declarative_base() >>> Base.metadata MetaData(None)если вы пытаетесь выяснить, какие таблицы присутствуют в вашей базе данных, даже среди тех, о которых вы даже не сказали SQLAlchemy тем не менее, тогда вы можете использовать отражение таблицы. Затем SQLAlchemy проверит базу данных и обновит метаданные со всеми отсутствующими таблицами.
>>> metadata.reflect(engine)
Я искал что-то вроде этого:
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()это выполнение и возвращает все таблицы.
обновление:
Postgres:
eng = create_engine('postgresql+psycopg2://root:password@localhost/ q = eng.execute('SELECT * FROM pg_catalog.pg_tables')
объект метаданных, с помощью которого вы создали таблицы, имеет это в словаре.
metadata.tables.keys()
from sqlalchemy import create_engine engine = create_engine('postgresql://use:pass@localhost/DBname') print (engine.table_names())
отображение всех таблиц сразу позволяет получить скрытые имена таблиц тоже. Я создал несколько временных таблиц, и они появились с
meta = MetaData() meta.reflect(bind=myengine) for table in reversed(meta.sorted_tables): print tableСсылка http://docs.sqlalchemy.org/en/latest/core/reflection.html
Я решаю ту же проблему и нашел этот пост. После некоторой попытки запуска, я бы предложил использовать НИЖЕ, чтобы перечислить все таблицы: (упомянутый zerocog)
metadata = MetaData() metadata.reflect(bind=engine) for table in metadata.sorted_tables: print(table)это полезно для прямой стол, и я чувствую, рекомендуется.
и использовать ниже код, чтобы получить имена таблиц:
for table_name in engine.table_names(): print(table_name)"метаданные.таблицы " предоставляет Dict для имени таблицы и объекта таблицы. что также было бы полезно для быстрого запроса.
Comments