python - query - sqlalchemy relationship
Cómo obtener nombres de columna del resultado de SQLAlchemy(sintaxis declarativa) (4)
Estoy trabajando en un proyecto piramidal y tengo la tabla en SQLAlchemy en sintaxis declarativa
"""models.py"""
class Projects(Base):
__tablename__ = ''projects''
__table_args__ = {''autoload'': True}
Obtengo los resultados usando
""""views.py"""
session = DBSession()
row_data = session.query(Projects).filter_by(id=1).one()
¿Cómo puedo obtener los nombres de columna de este resultado.
PD: No puedo usar this método porque estoy usando la sintaxis declarativa.
La diferencia es entre ORM y no ORM, no declarativo, que es solo una ayuda para el ORM.
La consulta tiene un método column_descriptions()
que se agregó para este propósito ::
http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.column_descriptions
el ejemplo parece que tiene un error tipográfico, dice q.columns
pero debería ser q.column_descriptions
(edición: simplemente lo arreglé).
Puedes hacer algo similar a la respuesta de Foo Stack sin tener que recurrir a campos privados haciendo:
conn.execute(query).keys()
Simplemente jugando, esta sintaxis te dará todas las columnas (para resolver tu problema, configura la consulta para ver solo una tabla / objeto):
conn.execute(query)._metadata.keys
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import (Column, Index, Date, DateTime, Numeric, BigInteger, String, ForeignKey, Boolean)
Base = declarative_base()
class Project(Base):
"""sqlalchemy ORM for my table."""
__tablename__ = "table1"
id = Column("id", BigIntegerID, primary_key=True, autoincrement=True)
date = Column("date", Date, nullable=False)
value = Column("value", Numeric(20, 8))
...
...
Entonces esto devolverá los nombres de las columnas [''id'', ''fecha'', ''valor'', ...]:
Project.__table__.columns.keys()
O esto
Project.metadata.tables[''table1''].columns.keys()