python调用mysql中的自定义变量,为啥返回的值都是None
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python调用mysql中的自定义变量,为啥返回的值都是None相关的知识,希望对你有一定的参考价值。
self.__cur=self.__db.connection()
str1="set @mytemp = 0;select * from (SELECT (@mytemp:=@mytemp+1) as newid,aid FROM person_in_active order by id desc) AS A WHERE A.aid=%s"
self.__cur.execute(str1,id)
num=self.__cur.fetchall()
代码如上,目的是获取某个id在数据库的第几行。
但是返回值(num)
一直都是None。
很无解!
你写的代码中格式化字符串方法有问题.应该改成下面这样.
self.__cur=self.__db.connection()str1="set @mytemp = 0;select * from (SELECT (@mytemp:=@mytemp+1) as newid,aid FROM person_in_active order by id desc) AS A WHERE A.aid=%s"
self.__cur.execute(str1 % id)
# 把","改成 % 才行, 作用是把str1中%s替换成id的值.
num=self.__cur.fetchall() 参考技术A 因为你的SQL里的%s没有赋值。
mysql插入数据时返回出入数据ID
INSERT INTO user_info (name,gender,height,age)VALUES(‘sa‘,‘女‘,‘120‘,‘12‘);SELECT @@IDENTITY
@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,
用户自定义变量以@开头。比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。
使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值------百度
以上是关于python调用mysql中的自定义变量,为啥返回的值都是None的主要内容,如果未能解决你的问题,请参考以下文章