SQL Алхимия – Получение списка таблиц

Я не мог найти информацию об этом в документации, но как получить список таблиц, созданных в SQLAlchemy?

Я использовал метод класса для создания таблиц.

  • Как создать SQL-представление с SQLAlchemy?
  • SQLAlchemy ORM выбирает несколько объектов из подзапроса
  • Удалить детей после того, как родитель удален в SQLAlchemy
  • Как настроить таблицу с рекурсивным внешним ключом и отношения декларативно в SQLAlchemy?
  • Можно ли использовать Mysql с SqlAlchemy и Flask, если мой сокет mysql не находится в / tmp?
  • Как расширить функциональность `getter` функции объединения SQLAlchemy?
  • SQLAlchemy отношение «многие ко многим» в декларативных таблицах
  • Как подключиться к SQL Server через sqlalchemy с помощью проверки подлинности Windows?
  • 7 Solutions collect form web for “SQL Алхимия – Получение списка таблиц”

    Все таблицы собираются в атрибуте tables объекта sqlalchemy MetaData. просто получить список имен этих таблиц:

     >>> metadata.tables.keys() ['posts', 'comments', 'users'] 

    Если вы используете декларативное расширение, вы, вероятно, сами не управляете метаданными. К счастью, метаданные все еще присутствуют в базовом классе,

     >>> Base = sqlalchemy.ext.declarative.declarative_base() >>> Base.metadata MetaData(None) 

    Если вы пытаетесь выяснить, какие таблицы присутствуют в вашей базе данных, даже среди тех, о которых вы еще не сказали sqlalchemy, вы можете использовать отображение таблицы. sqlalchemy будет проверять базу данных и обновлять метаданные всеми отсутствующими таблицами.

     >>> metadata.reflect(engine) 

    В объекте engine есть метод для извлечения списка имен таблиц. engine.table_names()

    Объект метаданных, созданный вами в таблицах, имеет это в словаре.

     metadata.tables.keys() 

    Я искал что-то вроде этого:

      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') 

    Отражение всех таблиц одновременно позволяет также получить скрытые имена таблиц. Я создал несколько временных таблиц, и они появились с

     meta = MetaData() meta.reflect(bind=myengine) for table in reversed(meta.sorted_tables): print table 

    Ссылка http://docs.sqlalchemy.org/en/latest/core/reflection.html

     from sqlalchemy import create_engine engine = create_engine('postgresql://use:pass@localhost/DBname') print (engine.table_names()) 

    Я решаю ту же проблему и нашел этот пост. После некоторой попытки запустить, я бы предложил использовать ниже, чтобы перечислить все таблицы: (упомянутый 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) 

    «metadata.tables» предоставляет Dict для имени таблицы и объекта Table. который также будет полезен для быстрого запроса.

    Python - лучший язык программирования в мире.