Вставка ядра SQLAlchemy не вставляет данные в БД - PullRequest
0 голосов
/ 30 ноября 2018

У меня такая проблема, что SQLAlchemy Core не вставляет строки, когда я пытаюсь вставить данные, используя connection.execute(table.insert(), list_of_rows).Я создаю объект соединения без каких-либо дополнительных параметров, это означает connection = engine.connect() и двигатель только с одним дополнительным параметром engine = create_engine(uri, echo=True).Кроме того, что я не могу найти данные в БД, я также не могу найти оператор «INSERT» в журналах моего приложения.

Может быть важно, что эту проблему я воспроизводил во время тестов py.test.

БД, которую я использую, - это mssql в контейнере Docker.

EDIT1: число строк прокси-результата всегда равно -1, независимо от того, использую я транзакцию или нет, и если я изменил вставку на connection.execute(table.insert().execution_options(autocommit=True), list_of_rows).rowcount

EDIT2: я переписал этот код, и теперь он работает.Я не вижу большой разницы.

1 Ответ

0 голосов
/ 30 ноября 2018

Количество вставленных строк после connection.execute:

proxy = connection.execute (table.insert (), list_of_rows) print (proxy.rowcount)

, если rowcount равноположительное целое число, оно доказывает, что оно действительно записывает данные в БД, но может присутствовать только в транзакции, если это так, вы можете проверить, включен ли автокоммит: https://docs.sqlalchemy.org/en/latest/core/connections.html#understanding-autocommit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...