Python3 操作 MySQL 插入数据并获取主键 ID 的方法

闻溪
闻溪
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍在 Python3 中向 MySQL 插入数据后如何获取生成的主键 ID。主要方法包括使用 cursor.lastrowid 和 conn.insert_id(),需强调必须在 conn.commit() 提交前调用。此外还涉及多线程并发限制及多进程建议,并补充了 MyBatis 中通过 SELECT LAST_INSERT_ID() 获取 ID 的配置示例。

Python3 获取 MySQL 插入后主键 ID 的方法

在 Python 中,目前似乎没有直接返回插入数据自增 ID 的内置操作(至少常见库中未直接提供),但我们可以通过变通方式获取最新插入的数据 ID。


#!/usr/bin/env python3
# -*- coding: UTF-8 -*- 

import pymysql 

db = pymysql.connect(**db_conf)
cursor = db.cursor()
cursor.execute(sql)

# 最后插入行的主键id
print(cursor.lastrowid)

# 最新插入行的主键id
print(conn.insert_id())

conn.commit() 

使用 cursor.lastrowid 和 conn.insert_id() 时,务必确保在 conn.commit() 之前执行,否则可能无法获取正确的结果。

由于数据库的安全机制,当一个进程执行完一条语句后,只有该进程能看到新插入的数据。若希望其他进程也能看到数据,必须使用 conn.commit() 进行提交,从而保证多进程同时操作数据库时不会发生冲突。

然而,多线程并发插入时这种方法可能失效,因为多线程共享数据状态,且 Python 中并不存在真正的多线程(受 GIL 限制)。因此,建议在高并发场景下使用多进程方案。

MySQL 插入数据后获取主键 ID 的补充

补充拓展:在 MySQL 中插入一条数据后,如何获取插入后的主键 ID 值。

当我们涉及多表进行插入操作时,常常需要在程序中等到刚刚插入数据的主键 ID,以便进行多表关联。

那么便需要在 Mapper.xml 的 insert 方法前插入以下代码即可:


 <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
 SELECT LAST_INSERT_ID() AS id
 </selectKey>

以上这篇 Python3 操作 MySQL 插入一条数据并返回主键 id 的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表