У меня SQLServer TSQL-запрос, который имеет несколько инструкций INSERT, которые варьируются от довольно простых до нескольких сложных.
Этот запрос работает в SQLServer Management Studio.
Когда я использую пакет pypyodbc Python и запускаю скрипт, скрипт запускается, но не фиксирует. Я попытался с и без функции commit().
НО, если я укажу инструкцию SELECT в конце, скрипт зафиксирует вставки.
Так что все хорошо, потому что это работает, но я помещаю неприменимый оператор SELECT в конце всех моих скриптов.
Есть ли у кого-нибудь идеи, как я могу их заставить совершить без инструкции SELECT в конце? Я не хочу разбить запросы на несколько запросов.
Спасибо!
def execute_query(self,
query,
tuple_of_query_parameters,
commit=False,
return_insert_id=False,
return_results=True):
self.open_cursor()
try:
self.connection_cursor.execute(query,
tuple_of_query_parameters)
result_set = None
if return_results:
if return_insert_id:
result_set = self.connection_cursor.fetchone()[0]
else:
result_set = self.connection_cursor.fetchall()
if commit:
self.connection_cursor.commit()
except pypyodbc.Error as e:
print('Check for "USE" in script!!!')
raise
finally:
self.close_cursor()
return result_set
Попробуй это:
self.connection_cursor.execute(query,
tuple_of_query_parameters)
if commit:
self.connection_cursor.commit() #put commit here, immediately after execute
Я думаю, что это сделает трюк.
commit
должен сделать свое дело, это, вероятно, просто небольшая синтаксическая проблема.