Python pymssql 模块 查询数据时报错 求解决方法

img


    def SQL_fp_spxxmx(self):  #查询
        djbh = '109920054'
        connect = pymssql.connect(self.ip, self.zh, self.mima, self.shjk,charset='utf8')  # 服务器名,账户,密码,数据库名
        cursor = connect.cursor(as_dict=True)  # 创建数据库游标
        cursor.execute("SELECT  * FROM 吉林东晨药业有限公司.dbo.GQ_DDPF where djbh = '%s' "%djbh)
        shuju = cursor.fetchall()#fetchone   fetchall
        cursor.close()
        connect.close()
        print(shuju)
        return  shuju

  1. 数据库和表的字符集都改成 utf8mb4, 如下

    img

  2. pymysql 连接是可以全局复用的, 你放到init里就可以全局代用了

    def __init__(self):
         self.conn = pymysql.connect(host='127.0.0.1', user='root', passwd="123456", db='user',
                                     port=3306, charset='utf8')
         self.conn.autocommit(1)
    
     def req(self):
         self.conn.ping(reconnect=True)
         cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
    
         djbh = '109920054'
         cursor.execute(f"SELECT  * FROM database.table where djbh = '{djbh}' ")
         data =cursor.fetchall()
         cursor.close()
    
  3. 库名表名都用英文小写, 别用中文

djbh后面不能用等于号,改为 like

编码问题,转成utf-8试下

这个问题,关pymysql模块什么事了?
1、你查询出来的数据格式编码和你的console编码不一样导致;
2、解决方法:
第一、decode你的数据
第二、设置你的console编码
第三、只要两者的编码格式一致即可解决

print(shuju,encoding='utf-8') 试试