query python sqlalchemy

python - query - sqlalchemy select



Obtenga la clave principal después de insertar filas usando sqlalchemy (2)

Estoy insertando muchas filas con sqlalchemy:

connection = engine.connect() topic_res = connection.execute(message_topics.insert(),[ { ''mt_date'': time.time(), ''mt_title'': title, ''mt_hasattach'':u''0'', ''mt_starter_id'':member.member_id, ''mt_start_time'': time.time(), ''mt_last_post_time'': time.time(), ''mt_invited_members'': u''a:0:{}'', ''mt_to_count'': u''1'', ''mt_to_member_id'':member.member_id, ''mt_replies'': u''1'', } for member in members ]) topic_res.inserted_primary_key

cuando trato de insertar claves principales, y obtengo:
AttributeError: el objeto ''MySQLExecutionContext_mysqldb'' no tiene el atributo ''inserted_primary_key'', pero topic_res es el objeto ''ResultProxy'' debido a la depuración.
Entonces, si inserto solo una fila, puedo obtener topic_res.inserted_primary_key.



el atributo inserted_primary_key solo funciona para una inserción de una sola fila:

http://docs.sqlalchemy.org/en/rel_0_7/core/connections.html?highlight=inserted_primary_key#sqlalchemy.engine.base.ResultProxy.inserted_primary_key

Esto solo se aplica a construcciones de inserción de una sola fila () que no especifican explícitamente Insert.return ().

esto se debe a una limitación ampliamente prevalente en las bibliotecas de cliente de bases de datos, incluidas todas las DBAPI de Python, donde solo queda un atributo de "último identificador insertado" disponible a la vez.