name (VARCHAR) | sex(VARCHAR) | id (VARCHAR) |
---|---|---|
Bob | female | 1 |
Jim | male | 2 |
数据库存在上述的人员信息表people,在实际python执行过程会出现以下的代码
sql="select * from people where id=%s and name =%s "
cursor.execute(sql,[1,'Bob'])
但是在实际执行过程中会报以下错误:
No operator matches the given name and argument type(s)
产生的原因是因为表格的id是char型,但是在实际传入的过程中,传入的id是为int型的,因此会产生上述报错;
因此在实际的执行过程中需要涉及到参数的类型的转化;
如以下转化
方式一:使用cast关键字
SELECT name FROM people id = cast(%s as VARCHAR) and name= %s
方式二:
字段 :: 需要转换为的数据类型
SELECT name FROM people name=%s and id =s% ::VARCHAR
cursor.execute(sql,['Bob',1])
个人更推荐第一种方法 ,不喜勿喷 :)