【问题标题】:How i can get data from DB with columns.names(keys)?如何使用 columns.names(keys) 从 DB 获取数据?
【发布时间】:2021-12-11 15:07:05
【问题描述】:

我正在使用 SQLAlchemy 从我的数据库中提取数据。更具体地说,我使用 db.select 方法。所以我设法只从列中提取值或只提取列的名称,但我需要以 NAME: VALUE 的格式提取。帮助如何做到这一点?

 connection = engine.connect()
    metadata = db.MetaData()
    report = db.Table('report', metadata, autoload=True, autoload_with=engine)
    query = db.select([report])
    ResultProxy = connection.execute(query)
    ResultSet = ResultProxy.fetchall()
 

【问题讨论】:

标签: python sqlalchemy


【解决方案1】:

使用 SQLAlchemy 1.4+,我们可以使用 .mappings() 以类似字典的格式返回结果:

import sqlalchemy as sa

# …

t = sa.Table(
    "t",
    sa.MetaData(),
    sa.Column("id", sa.Integer, primary_key=True, autoincrement=False),
    sa.Column("txt", sa.String),
)
t.create(engine)

# insert some sample data
with engine.begin() as conn:
    conn.exec_driver_sql(
        "INSERT INTO t (id, txt) VALUES (1, 'foo'), (2, 'bar')"
    )

# test code
with engine.begin() as conn:
    results = conn.execute(select(t)).mappings().fetchall()
    pprint(results)
    # [{'id': 1, 'txt': 'foo'}, {'id': 2, 'txt': 'bar'}]

【讨论】:

    【解决方案2】:

    作为the docs 状态,ResultProxy.fetchall() 返回RowProxy 对象列表。这些行为类似于命名元组,但也可以像字典一样使用:

    >>> ResultSet[0]['column_name']
    column_value
    

    欲了解更多信息,请参阅https://docs.sqlalchemy.org/en/13/core/tutorial.html#coretutorial-selecting

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-29
      • 2017-11-17
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2021-04-16
      • 1970-01-01
      相关资源
      最近更新 更多