python - 不使用声明性语法时从 SQL Alchemy 结果获取列名

标签 python mysql sqlalchemy

我通过 SQL Alchemy 查询我的数据库,如下所示:

dev_engine = create_engine('mysql://...')

get_prod_instrument = "select * from market_instrument inner join exchange_instrument on market_instrument.id = exchange_instrument.instrument_id \
inner join tick_size on market_instrument.id = tick_size.instrument_id \
left join futures on market_instrument.id = futures.instrument_id \
inner join (select distinct(substring(m.symbol, 1, 2)) as product from market_instrument as m inner join fills as f on m.id=f.instrument_id where symbol<>\"\" and fill_timestamp between CURDATE() - INTERVAL " + str(last_days) + \
                         " DAY AND NOW()) r on market_instrument.symbol like concat(r.product, '%') \
where symbol not like '%_old%' and symbol not like '%:%';"

result = dev_engine.execute(get_prod_instrument)

result 是一个大表。我希望能够在 sqlalchemy 中获得该表的列名。有没有办法调整我的查询或使用 Python 获取某些 python 对象中的列名称?

最佳答案

我能够像这样获取列名称:

dev_engine = create_engine('mysql://...')

get_prod_instrument = "select * from market_instrument inner join exchange_instrument on market_instrument.id = exchange_instrument.instrument_id \
inner join tick_size on market_instrument.id = tick_size.instrument_id \
left join futures on market_instrument.id = futures.instrument_id \
inner join (select distinct(substring(m.symbol, 1, 2)) as product from market_instrument as m inner join fills as f on m.id=f.instrument_id where symbol<>\"\" and fill_timestamp between CURDATE() - INTERVAL " + str(last_days) + \
                         " DAY AND NOW()) r on market_instrument.symbol like concat(r.product, '%') \
where symbol not like '%_old%' and symbol not like '%:%';"

result = dev_engine.execute(get_prod_instrument)
# getting columns
description_tuple = result.cursor.description
headers = [k[0] for k in description_tuple] # a list of the column names

result.cursor.description 是一个元组,每个元组的第一个属性是列名

我认为这不是最好的解决方案,因为这是直接访问 ResultProxy 对象的底层对象之一,而不是通过 getter 检索该对象,但我找不到任何封装方法来检索不使用声明性语法时的列名称。

关于python - 不使用声明性语法时从 SQL Alchemy 结果获取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34773776/

相关文章:

python - 如何根据python(pandas,jupyter)中的另一列值获取一列的平均值

mysql - 选择查询中有特定的单词记录

postgresql - Flask sqlAlchemy 手册 ORM : 'RelationshipProperty' object has no attribute 'parent'

python - 在 SQLAlchemy 中对多列进行排序的语法

mysql - 重复表 mysql 显示表(Azure 实例)

mysql - 如何使用 sqlalchemy 在 mysql 中设置 DEFAULT ON UPDATE CURRENT_TIMESTAMP?

python - 如何打印行和列标签以输出csv文件

python - 使用 Altair 进行分面时仅显示选定的行?

python Mechanize : create and submit a form

PHP MySQL查询多个类别的多个产品