python mysql lastrowid_Python mysql.connector cursor.lastrowid总是返回0

我正在使用

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电话.有什么建议?


版权声明:本文为weixin_42467374原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。