Python3 操作 MySQL 插入数据并获取主键 ID 的方法
本文介绍在 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 的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









