python中向mysql数据库插入变量

list=[]
.........................
sql="select student.id from student"
cursor.execute(sql)
data = cursor.fetchone()
while data!=None:
...............
sql="insert censor vaules("+data[0]+","+list[i]+",'开机的流程')"
...............
最后一句报错TypeError: cannot concatenate(链接) 'str' and 'long' objects
如何如何改才能正确打印出sql

从错误提示来看是 str 和 object 无法拼接,这是表象错误,实际上,你根本用不着拼接 str 和 object ,你这句 insert 看起来是有问题的,写的很乱。首先你要理清 censor 这个表有几个字段,是什么类型,然后再在这里构造 insert ,这里的双引号是给 python 解析的,双引号中的 values 后的各值还要加单引号,那是给 mysql 看的,要用清醒的头脑认识到这点你才能拼接好。
改成这样试试,注意加了很多单引号:
sql="insert censor vaules('"+data[0]+"','"+list[i]+"','开机的流程')"
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-13
sql="insert censor vaules("+data[0]+","+list[i]+",'开机的流程')"

list[i]是个长整型数,不能直接和字符串连接。用str(list[i])先转换它为字符串。
第2个回答  2017-11-25
我想问一下 你的data的数据类型是什么
第3个回答  2014-07-11
看着没逻辑错误。最后一个insert是不是少了into..追问

不是这个问题,主要是我在用print打印sql的时候变量没有被解析出来

追答

你得用cursor执行了sql负值给变量再打印变量啊,肯定不能直接打印sql

追问

??

追答

我估计你想问的和我理解的不太一样,你上面代码只有一个地方用了print,你是指那个print没有正常打印吗?如果是的话,检查数据库链接语句(你没贴出来)、是否有游标创建。

相似回答