首页 > 解决方案 > pyodbc:多个连接问题,.ipynb 文件中的 DML 语句未反映在 SQL Server 中

问题描述

我正在使用 pyodbc 连接到本地计算机上的数据库。我有两个 .ipynb 文件,它们分别负责填充该数据库中的两个关系。

我提出的两个观察结果令人不安:

  1. 如果一个游标在一个文件中连接到我的数据库,而另一个游标在另一个文件中连接到数据库,则只有一个游标能够执行 DML 并从数据库中检索语句。

  2. 如果一个文件中的一个游标将元组插入到关系中,然后与数据库断开连接,然后另一个文件中的游标尝试从由第一个游标更新的关系中检索信息,则不会检索到任何信息。这与在 SQL Server 中执行 select 语句相同。

以下是每个文件中发生的情况的概括:

文件 1.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() 才能保留更改。

标签: sql-serverpyodbc

解决方案


我不知道命令 cnxn.commit(),在使用它之后我已经实现了预期的行为。


推荐阅读