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
数据库和表的字符集都改成 utf8mb4, 如下
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()
库名表名都用英文小写, 别用中文
djbh后面不能用等于号,改为 like
编码问题,转成utf-8试下
这个问题,关pymysql模块什么事了?
1、你查询出来的数据格式编码和你的console编码不一样导致;
2、解决方法:
第一、decode你的数据
第二、设置你的console编码
第三、只要两者的编码格式一致即可解决
print(shuju,encoding='utf-8') 试试