如何使用Python在INSERT到MySQL数据库后获取id?

如何使用Python在INSERT到MySQL数据库后获取id?

在数据库开发中,我们经常需要向MySQL数据库插入数据并获取插入数据的id,以方便后续的操作。在Python中,我们可以使用MySQLdb模块提供的cursor.lastrowid属性来获取最后一条插入的数据的id。本文将介绍如何在Python中使用MySQLdb模块实现INSERT到MySQL数据库后获取id。

阅读更多:Python 教程

安装MySQLdb模块

在使用MySQLdb模块之前,我们需要先安装这个模块。可以通过以下命令来安装:

pip install mysqlclient

连接MySQL数据库

在使用MySQLdb模块之前,我们需要先连接MySQL数据库。可以通过以下代码来连接数据库:

import MySQLdb

# 打开数据库连接
db = MySQLdb.connect(host="localhost", user="root", password="password", database="test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

其中,host为数据库主机名,user为数据库用户名,password为密码,database为要连接的数据库名。

数据库表结构

我们使用如下的表结构来作为示例:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

INSERT数据并获取id

我们可以使用以下代码来向数据库中插入数据并获取插入的数据id:

import MySQLdb

# 打开数据库连接
db = MySQLdb.connect(host="localhost", user="root", password="password", database="test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# SQL 插入语句
sql = "INSERT INTO users(name,age) \
       VALUES ('John', 20)"

try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
   # 输出插入的数据id
   print("插入的数据id为:{}".format(cursor.lastrowid))
except:
   # 如果发生错误则回滚
   db.rollback()

# 关闭数据库连接
db.close()

其中,INSERT语句中通过VALUES插入了一条name为John,age为20的数据。程序执行结果如下:

插入的数据id为:1

由于这是我们第一次向表中插入数据,因此返回的id为1。如果表中已经有数据,则返回的id为自增长列的下一个可用值。

完整代码

完整的Python代码如下:

import MySQLdb

# 打开数据库连接
db = MySQLdb.connect(host="localhost", user="root", password="password", database="test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# SQL 插入语句
sql = "INSERT INTO users(name,age) \
       VALUES ('John', 20)"

try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
   # 输出插入的数据id
   print("插入的数据id为:{}".format(cursor.lastrowid))
except:
   # 如果发生错误则回滚
   db.rollback()

# 关闭数据库连接
db.close()

结论

使用MySQLdb模块的cursor.lastrowid属性,可以方便地实现INSERT到MySQL数据库后获取id的操作。通过该功能,可以使我们在数据操作时更加高效和便捷。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程