Получить первичный ключ после вставки строк с использованием sqlalchemy

Я вставляю много строк с 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 

когда я пытаюсь получить вставленные первичные ключи, и я получаю:
AttributeError: объект 'MySQLExecutionContext_mysqldb' не имеет атрибута 'insert_primary_key', но topic_res – это объект ResultProxy из-за отладки.
Поэтому, если я вставляю только одну строку, я могу получить topic_res.inserted_primary_key.

2 Solutions collect form web for “Получить первичный ключ после вставки строк с использованием sqlalchemy”

атрибут insert_primary_key работает только для однострочной вставки:

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

Это относится только к строковым конструкциям insert (), которые явно не указали Insert.returning ().

это связано с широко распространенным ограничением в клиентских библиотеках баз данных, включая все PAPI-файлы DBAPI, где одновременно доступен только один атрибут «последний вставленный идентификатор».

Возможно, ваш ProjectProxy – это список или объект, похожий на список, поэтому вы должны перебирать элементы = db-rows этого объекта:

 for e in topic_res: print e.inserted_primary_key 

EDIT: метод «insert_primary_key» работает только для однострочных вставок. См. http://docs.sqlalchemy.org/en/rel_0_6/core/connections.html#sqlalchemy.engine.base.ResultProxy.inserted_primary_key

  • Как я могу избавиться от ошибки циклической зависимости при создании базы данных в sqlalchemy?
  • Flask-SQLalchemy обновляет информацию о строке
  • Неописанный скрипт неожиданно работает быстрее, чем версия Threaded
  • Ошибка при попытке подключения MySQL с sqlalchemy (Flask)
  • Как создать ссылку на чужой ключ с sqlalchemy
  • Как получить исходное значение измененных полей?
  • sqlalchemy общий внешний ключ (например, в django ORM)
  • Комплексный запрос (подзапросы, функции окна) с sqlalchemy
  • SQLAlchemy - выберите пример обновления
  • Сохранять изображение, сохраненное в столбце LargeBinary SQLAlchemy
  • Что эквивалентно автосознанию Django, auto_now_add в SQLAlchemy?
  •  
    Interesting Posts for Van-Lav

    Как выполнить перенос данных между столбцами в таблицу csv?

    Взрывать списки разной длины в Пандах

    Различия между сельдереем между параллелизмом, рабочими и автомасштабированием

    Как определить неопределенность параметров подгонки с помощью Python?

    Python threading и GIL

    Python: открыть файл, выполнить поиск, а затем добавить, если не существует.

    Максимальное значение Python Pandas для выбранных столбцов

    Как получить первое слово в строке

    Python 3.2.2, ошибка (скрипты для exe)

    Добавление виджета foreignKey в django-import-export

    Вход в сервер аутентификации SAML / Shibboleth с использованием python

    Python версии 2.7: XML ElementTree: как выполнять итерацию через определенные элементы дочернего элемента, чтобы найти совпадение

    Более эффективная гистограмма диаграммы matplotlib – как рассчитать нижние значения

    Python db-api: fetchone vs fetchmany vs fetchall

    Переопределение Django REST ViewSet с пользовательским методом и моделью

    Python - лучший язык программирования в мире.