如何从SQLAlchemy结果中获取列名(声明性语法)

2024-05-10 03:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个金字塔项目中工作,我有一个声明语法的SQLAlchemy表

"""models.py"""
class Projects(Base):
    __tablename__ = 'projects'
    __table_args__ = {'autoload': True}

我通过使用

""""views.py"""
session = DBSession()
row_data = session.query(Projects).filter_by(id=1).one()

如何从该结果中获取列名。

注意:我不能使用this方法,因为我使用的是声明性语法。


Tags: 项目py声明basesqlalchemymodelssessiontable
3条回答

您可以执行与Foo Stack的答案类似的操作,而不必通过执行以下操作来诉诸私有字段:

conn.execute(query).keys()

区别在于ORM和非ORM,而不是声明性的,后者只是ORM的助手。

查询有一个为此目的添加的方法column_descriptions()

http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.column_descriptions

这里的示例似乎有一个拼写错误,比如q.columns,但是应该是q.column_descriptions(编辑:只是修复了它)。

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

然后返回列名['id','date','value',…]:

Project.__table__.columns.keys()

或者这个

Project.metadata.tables['table1'].columns.keys()

相关问题 更多 >