pyodbc插入到SQL Server数据库表已停止提交,为什么?

uinbv5nw  于 2022-11-21  发布在  SQL Server
关注(0)|答案(1)|浏览(145)

我有一个python脚本,自从我编写它以来,它已经插入到SQL Server表中几个星期了。突然它停止了插入,我可以看到它看起来像一个COMMIT问题,因为表中的主键标识ID列增加了-如果我在SSMS中执行T-SQL插入,我可以看到有几个ID值被跳过了。这些行似乎是插入的,但从外观上看是回滚的。我已经重新启动了SQL Server示例,并重新启动了我用来运行脚本的VS Code应用程序。没有成功。没有来自python/pyodbc的错误。我已经黔驴技穷了。有什么建议吗?

import pyodbc 

    SQL_DRIVER = 'SQL Server Native Client 11.0'
    SQL_OUTPUT_TABLE = "test"
    SERVER = "myServer"
    DATABASE = "myDB"

    def main():
        cnxn = pyodbc.connect('DRIVER={'+SQL_DRIVER+'};SERVER='+SERVER+';DATABASE='+DATABASE+';Trusted_Connection=yes')
        cursor = cnxn.cursor()

        tsql : str = "insert into [dbo].[test](col1) values ('stuff');"
        cursor.execute(tsql)
        cursor.commit
        cnxn.close

    if __name__ == '__main__':
        main()

已尝试替代SQL驱动程序。已创建您在此处看到的测试脚本以尽可能缩小范围。服务重新启动等。还可以成功地将行直接从SSMS内插入到表中。

zu0ti5jz

zu0ti5jz1#

我想我找到问题了。cursor.execute后面跟着conn.commit修复了它。

import pyodbc 

SQL_DRIVER = 'SQL Server Native Client 11.0'
SQL_OUTPUT_TABLE = "test"
SERVER = "DESKTOP-GBCJUII"
DATABASE = "xen_mints"

conn = pyodbc.connect('Driver={'+SQL_DRIVER+'};'
                      'Server='+SERVER+';'
                      'Database='+DATABASE+';'
                      'Trusted_Connection=yes;')

cursor = conn.cursor()

cursor.execute('''
                INSERT INTO '''+SQL_OUTPUT_TABLE+''' (col1)
                VALUES
                ('stuff')
                ''')
conn.commit()

相关问题