SQL Server 上的 pyodbc - 如何执行插入并取回行 ID

sqlserver

1个回答

写回答

单子

2025-07-09 19:13

+ 关注

Python
Python

使用 Python 和 pyodbc 连接到 SQL Server 数据库是一种常见的方式。当我们在执行插入操作时,通常需要获取插入行的 ID 值,以便进一步的操作或者验证。本文将介绍如何使用 pyodbc 在 SQL Server 上执行插入并取回行 ID 的方法,并提供一个案例代码进行演示。

连接到 SQL Server 数据库

首先,我们需要安装 pyodbc 模块,并确保已经正确配置了 SQL Server 的驱动程序。然后,我们可以使用以下代码连接到 SQL Server 数据库:

Python

import pyodbc

# 连接到 SQL Server 数据库

conn_str = 'DRIVER={SQL Server Native Client 11.0};SERVER=服务器地址;Database=数据库名称;UID=用户名;PWD=密码'

conn = pyodbc.connect(conn_str)

请注意,上述代码中的连接字符串需要根据实际情况进行修改,包括服务器地址、数据库名称、用户名和密码。确保提供了正确的凭据和连接信息。

执行插入操作并取回行 ID

有两种常见的方法可以在 SQL Server 上执行插入操作并取回行 ID。首先,我们可以使用 SCOPE_IDENTITY() 函数,在插入操作之后立即执行查询以获取行 ID。其次,我们还可以使用 OUTPUT 子句将插入的行 ID 直接返回。

使用 SCOPE_IDENTITY() 函数

以下是使用 SCOPE_IDENTITY() 函数执行插入操作并获取行 ID 的示例代码:

Python

# 创建游标对象

cursor = conn.cursor()

# 执行插入操作

cursor.execute("INSERT INTO 表名 (列1, 列2) VALUES (?, ?)", ('值1', '值2'))

# 获取插入行的 ID

cursor.execute("SELECT SCOPE_IDENTITY() AS id")

row = cursor.fetchone()

inserted_id = row.id

# 提交事务

conn.commit()

# 关闭连接

conn.close()

# 打印插入行的 ID

print("插入的行 ID 为:", inserted_id)

在上述代码中,我们首先创建了一个游标对象,然后执行插入操作。接着,我们执行了一个查询语句,使用 SCOPE_IDENTITY() 函数获取刚刚插入行的 ID 值,并将其保存到 inserted_id 变量中。最后,我们提交了事务并关闭了数据库连接。

使用 OUTPUT 子句

以下是使用 OUTPUT 子句执行插入操作并获取行 ID 的示例代码:

Python

# 创建游标对象

cursor = conn.cursor()

# 执行插入操作并获取行 ID

cursor.execute("INSERT INTO 表名 (列1, 列2) OUTPUT INSERTED.id VALUES (?, ?)", ('值1', '值2'))

# 提交事务

conn.commit()

# 获取插入行的 ID

row = cursor.fetchone()

inserted_id = row.id

# 关闭连接

conn.close()

# 打印插入行的 ID

print("插入的行 ID 为:", inserted_id)

在上述代码中,我们执行了一个带有 OUTPUT 子句的插入操作,将插入的行 ID 直接返回。然后,我们使用 fetchone() 方法获取返回的行,并将其 ID 值保存到 inserted_id 变量中。最后,我们提交了事务并关闭了数据库连接。

使用 pyodbc 在 SQL Server 上执行插入操作并取回行 ID 是一种常见的需求。本文介绍了使用 SCOPE_IDENTITY() 函数和 OUTPUT 子句两种方法来实现这一目标,并提供了相应的示例代码进行演示。通过这些方法,我们可以轻松地在插入操作后获取新行的 ID 值,以便进行后续操作或验证。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号