Python DB API получает вставленный идентификатор строки - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующий код:

cursor = connection.cursor()
cursor.execute('INSERT INTO my_table (col1, col2) VALUES (?, ?)', params) # return None

Azure Synapse Analytics не поддерживает @@ IDENTITY и SCOPE_IDENTITY, а cursor.execute возвращает None.

Как я могу получить вставленный PK (сгенерированный IDENTITY(1,1))?

PS Я знаю, что Synapse - это MPP в виде столбцов, а не OLTP. Это необходимо в целях Po C, ради скорости разработки. В ближайшее время я перейду на соответствующие RDBM

1 Ответ

1 голос
/ 26 февраля 2020

Похоже, что ни один из стандартных методов T- SQL для извлечения новых значений IDENTITY не поддерживается Azure Synapse Analytics - включая (@@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT, OUTPUT и использование последовательности (через NEXT VALUE FOR) для установки значения PK вместо IDENTITY)

Возможно, единственный вариант - выполнить второй запрос после вставки. В зависимости от уникальности вставленных данных это может быть просто:

SELECT ID from my_table WHERE col1 = ? AND col2 = ?

или может потребоваться более сложный, если вам приходится иметь дело с дубликатами.

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