如何使用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的操作。通过该功能,可以使我们在数据操作时更加高效和便捷。
极客笔记