pyodbc: множественные проблемы с подключением, операторы DML в файлах .ipynb, не отраженные в SQL Server - PullRequest
1 голос
/ 07 ноября 2019

Я использую pyodbc для подключения к базе данных на моей локальной машине. У меня есть два файла .ipynb, которые отвечают за заполнение двух отношений в этой базе данных соответственно.

Есть два замечания, которые меня беспокоят:

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

  2. Если один курсор в одном файле вставляет кортежи в отношение, а затем отключается от базы данных,и затем курсор в другом файле пытается извлечь информацию из отношения, которое было обновлено первым курсором, информация не извлекается. Это то же самое для выполнения оператора выбора в SQL Server.

Вот обобщение того, что происходит в каждом файле:

File1.ipynb:

    cursor.connect(...)
    cursor = conn.cursor()
    # big array of commands
    commands = ["insert into ... values ...", "insert into ... values ..."]

    for line in commands:
        cursor.execute(line)

Распечатка содержимогокурсор показывает мне, что оператор был успешно выполнен.

Теперь в file2.ipynb:

    cursor.connect(...)
    cursor = conn.cursor()

    cursor.execute("select * from updatedTable") # this line hangs
    for row in cursor:
        print(row)        # if cursor is disconnected from file1, still nothing is printed 

Любая помощь в разрешении нескольких соединений и подтверждении сохранения данных будет принята с благодарностью.

Обновление: необходимо выполнить cnxn.commit (), чтобы сохранить изменения.

1 Ответ

2 голосов
/ 07 ноября 2019

Я не знал о команде cnxn.commit (), после использования которой я добился желаемого поведения.

...