Я бы хотел выполнить необработанные SQL запросы через SQLAlchemy, чтобы в полученных строках использовались типы python, которые автоматически сопоставляются с типом базы данных. Эта функция AutoMap доступна для таблиц в базе данных. Это доступно для любого произвольного набора результатов?
Например, мы создаем небольшую базу данных sqlite:
import sqlite3
con = sqlite3.connect('test.db')
cur = con.cursor()
cur.execute("CREATE TABLE Trainer (id INTEGER PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), dob DATE, tiger_skill FLOAT);")
cur.execute("INSERT INTO Trainer VALUES (1, 'Joe', 'Exotic', '1963-03-05', 0.6)")
cur.execute("INSERT INTO Trainer VALUES (2, 'Carole', 'Baskin', '1961-06-06', 0.3)")
cur.close()
con.commit()
con.close()
И с помощью SQLAlchemy я запрашиваю вновь созданную базу данных "test.db":
from sqlalchemy import create_engine
engine = create_engine("sqlite:///test.db")
connection = engine.connect()
CUSTOM_SQL_QUERY = "SELECT count(*) as total_trainers, min(dob) as first_dob from Trainer"
result = connection.execute(CUSTOM_SQL_QUERY)
for r in result:
print(r)
>>> (2, '1961-06-06')
Обратите внимание, что второй столбец в наборе результатов представляет собой строку python, а не объект python datetime.date
. Есть ли способ для sqlalchemy автоматизировать произвольный набор результатов? Или эта возможность отражения автомата ограничена только реальными таблицами в базе данных?