Скрипт Python блокирует SQL Server в IPython Notebook

Я запускаю очень короткий скрипт, который выполняет этот запрос:

cnxn = pyodbc.connect(driver='{SQL Server}', server='myServer', database='myDB',               
           trusted_connection='yes')
cursor = cnxn.cursor()
cursor.execute("INSERT INTO myTable (ID, Sale, Quantity) VALUES (176, 2.0, 35.0), (176, 2.5, 62.0), (176, 3.0, 89.0), (176, 3.5, 154.0), (176, 4.0, 225.0), (176, 4.5, 365.0)")
cursor.close()

Когда я пытаюсь извлечь только что вставленные данные, запрос блокируется и продолжает выполняться, ничего не возвращая. Я должен убить процесс, чтобы освободить вещи. При выполнении одного и того же запроса в SQL Server 2008 он работает нормально. Совет по отладке будет признателен.

1 ответ

  1. Вероятно, вам лучше использовать executemany, и Вам также нужен оператор commit после ваших вставок.

    vals = [ (176, 2.0, 35.0), (176, 2.5, 62.0), (176, 3.0, 89.0), (176, 3.5, 154.0), (176, 4.0, 225.0), (176, 4.5, 365.0)]
    cursor.executemany("""
                      INSERT INTO myTable
                      (ID, Sale, Quantity)
                      VALUES (?,?,?)
                      """, vals)
    cnxn.commit()