我正在使用
Python 2.7的mysql.connector模块.我已将代码分解为最简单的脚本,但我仍然遇到此问题.问题是,当我尝试获取最后一行id(在MySQL中为LAST_INSERT_ID)时,无论插入了多少行,都会返回0.有没有人有这个问题的解决方案?
我的代码如下:
import mysql.connector
default_config = {
'user': 'root',
'password': 'password',
'host': '127.0.0.1',
'database': 'test',
'raise_on_warnings': True,
'autocommit': True
}
connection = mysql.connector.connect(**default_config)
cursor = connection.cursor()
args = ('name', 'desc')
cursor.callproc('sp_tools_insert', args)
lastid = cursor.lastrowid
print lastid # This returns 0 every time, regardless of number of inserts
我的存储过程如下所示:
CREATE PROCEDURE `sp_tools_insert`
(
IN p_name VARCHAR(45),
IN p_description VARCHAR(255)
)
BEGIN
INSERT INTO TOOLS
(
tool_name,
description
)
VALUES
(
p_name,
p_description
);
END
这就是我的TOOLS表的定义方式:
DROP TABLE IF EXISTS `test`.`TOOLS` ;
CREATE TABLE IF NOT EXISTS `test`.`TOOLS` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`tool_name` VARCHAR(45) NOT NULL,
`description` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
我已验证存储过程是否正常工作,并且.callproc()调用按预期工作.唯一不起作用的是.lastrowid电话.有什么建议?