我通过 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/