Я пытаюсь получить имена столбцов и типы данных из базы данных PgSQL. Результат должен выглядеть как результат этого запроса:
SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'public'
Я пытался получить эту информацию, используя automap_base()
и inspect()
. К сожалению, automap_base()
не отображает никаких таблиц схемы, а объект inspect
не имеет методов, которые дают имена столбцов и типы данных.
Я также попробовал метод column_descriptions
таким образом:
In [1]:
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine, MetaData, inspect
Base = automap_base()
db_user = 'postgres'
db_password = 'password'
db_host = 'localhost'
db_name = 'db_test'
engine = create_engine(
'postgresql+psycopg2://{user}:{password}@{hostname}/{database_name}'.format(
user=db_user,
password=db_password,
hostname='{}:{}'.format(db_host, '5432'),
database_name=db_name
)
)
Base.prepare(engine, reflect=True)
clients = Base.classes.clients
session = Session(engine)
q = session.query(clients)
q.column_descriptions
Out [1]:
[{'name': 'clients',
'type': sqlalchemy.ext.automap.clients,
'aliased': False,
'expr': sqlalchemy.ext.automap.clients,
'entity': sqlalchemy.ext.automap.clients}]
Есть ли способ получить имена столбцов и типы данных таблицы из существующей базы данных, используя SQLAlchemy?