#python #sqlalchemy #pymysql
#python #sqlalchemy #pymysql
Вопрос:
Например, когда я выполняю следующий код, результирующий тип данных str
:
result = engine.execute('''
SELECT CAST('{"foo": "bar"}' as JSON) as `json`
''')
row = result.fetchone()
json = row[0]
type(json)
Значение столбца json, имеющее тип str
, не очень удобно для метапрограммирования.
Вопрос
Есть ли какой-либо способ извлечь информацию из result
(или экземпляра ResultProxy
), какой тип был у каждого столбца?
env
- MySQL: 8.0.11
- SQLAlchemy: 1.3.0
- pymysql: 0.9.3
Ответ №1:
Вы можете, по крайней мере, достичь этого, явно сообщив SQLAlchemy, что результатом является JSON:
from sqlalchemy.types import JSON
stmt = text('''SELECT CAST('{"foo": "bar"}' as JSON) as `json`''')
stmt = stmt.columns(json=JSON)
row = engine.execute(stmt).fetchone()
type(row.json)