感觉各种类型转换是最头疼的,因为python是动态语言,并不显式标明变量类型,尤其是在用到各种第三方库的时候,基本都会有自己的一套类型,稍不小心就进坑。
最近的项目用到了pyqt和numpy,其中有一段需要往数据库里添加值
q.prepare("INSERT INTO t1 VALUES(?, ?)")
q.bindValue(0, filename_table)
q.bindValue(1, text)
q.exec_()
从代码可以看到是要加两个值,但是程序跑出来总是只加了第一个。开始以为是代码写错了,QtSql确实提供了好几种添加值的方法,都试了一下也不行,单独把这段代码拎出来,设定
filename_table = "ds"
text = "dsk"
是没有问题的,想了好长时间突然发现,那个text值我是传进去的,是由numpy库里的函数计算得出来的。赶紧用type试了下,果然返回值是numpy.unicode, 而bindValve需要的参数是QString,当然python的string也能接受,于是在传进前str(text)了一下,问题解决了!