Sqlalchemy:打印表

时间:2016-07-01 18:24:56

标签: python sqlite sqlalchemy

我想使用sqalchemy打印表格的所有内容。我似乎无法弄清楚检查的工作原理。

我想实现类似的目标:

column1: value1, column2: value4
column1: value2, column2: value5
column1: value3, column2: value6

在一个如下所示的表格中:

Table_1:
+---------+---------+
| column1 | column2 |
+---------+---------+
| value1  | value4  |
| value2  | value5  |
| value3  | value6  |
+---------+---------+

2 个答案:

答案 0 :(得分:2)

虽然我不知道如何使用inspect来执行此操作,但是我通过常规查询实现了期望的输出。对于此示例,我根据您的示例创建了一个sqlite表。首先,我们连接并反思这个现有数据库。

from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import select
eng = create_engine("sqlite:///databases/example_table.db")

Base = automap_base()
Base.prepare(eng, reflect=True)
Table = Base.classes.example_table

为便于查询,我们实例化了一个session

Session = sessionmaker(bind=eng)
session = Session()

并执行查询,将结果保存到result

stmt = select('*').select_from(Table)
result = session.execute(stmt).fetchall()

此查询的元素是sqlalchemy RowProxy类的实例,该类具有一个keys方法,该方法可用于访问列名。因此,我们可以使用一些简短的函数来变换result

def result_dict(r):
    return dict(zip(r.keys(), r))

def result_dicts(rs): 
    return list(map(result_dict, rs))

result_dicts(result)

返回

[{'id': 1, 'column1': 'value1', 'column2': 'value4'},
 {'id': 2, 'column1': 'value2', 'column2': 'value5'},
 {'id': 3, 'column1': 'value3', 'column2': 'value6'}]

答案 1 :(得分:1)

也许你看看这里:

http://docs.sqlalchemy.org/en/rel_1_0/core/reflection.html

检查器对象可以帮助您解决问题。