Я попытался выбрать возвращаемые значения из запроса вставки:
HOST_INSERT_QUERY = (
Host.__table__.insert()
.values(
name=bindparam("name"),
source=bindparam("source"),
type=bindparam("type")
)
.returning(Host.__table__.c.id)
)
result = db_conn.execute(HOST_INSERT_QUERY, values)
Что я вижу из db.echo:
info sqlalchemy.engine.base.Engine INSERT INTO hosts (name, source, type) VALUES ( %(name)s, %(source)s, %(type)s) RETURNING hosts.id
info sqlalchemy.engine.base.Engine ({ 'name': 'hhh', 'source': '["import"]', 'type': 'host'},{...})
debug: Added 2 hosts
Это действительно работает. Хозяева вставляют в базу данных, но я вижу некоторые проблемы в отладчике; Результат (ResultProxy) имеет:
rowcount = 2 #right!
is_insert = True #right!
return_rows=False #WHYYYY????????
Если я попытаюсь:
result.fetсhall()
AttributeError: 'ResultProxy' object has no attribute 'fetсhall'
Версия:
- SQLAlchemy 1.3.1
- psycopg-binary 2.7.7
Внимание!
Этот код работает только при вставке одной записи. При вставке нескольких строк невозможно извлечь значения из ВОЗВРАТА.