zoukankan      html  css  js  c++  java
  • Python查询数据库时候遇到的乱码问题

    今天在看Python连接数据库的内容,然后遇到了最常遇到的字符乱码的状况,这真的很烦人,由于我用的是3.6的版本,,默认的是utf-8,如果是3以下的版本,请在文件开头加一句代码

    #encoding=utf-8
    

     这是菜鸟教程上的代码

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # SQL 查询语句
    sql = "SELECT * FROM EMPLOYEE 
           WHERE INCOME > '%d'" % (1000)
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 获取所有记录列表
       results = cursor.fetchall()
       for row in results:
          fname = row[0]
          lname = row[1]
          age = row[2]
          sex = row[3]
          income = row[4]
           # 打印结果
          print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % 
                 (fname, lname, age, sex, income ))
    except:
       print ("Error: unable to fetch data")
    
    # 关闭数据库连接
    db.close()
    

      我比着敲出来的时候,出来的是乱码,如下所示

    这个黑人问号是什么鬼,然后从头开始找起,记得在配置数据库建表的时候一定要改成utf-8,不然一切都是徒劳的

    很明显,源头是没问题的,那就是代码的问题了。

    从网上找了许多方法,有一个是.decode('utf-8')方法,,我试过,但是会莫名的报错我也没找到具体原因,然后又想了一下之前在写PHP时候连接数据库的操作的时候顺便做的不经意的转码行为,,然后随即将代码改正

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host='localhost', user='root', passwd='0825', db='testdb', charset='utf8')
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 查询语句
    sql = "select * from employee"
    
    # 执行SQL语句
    cursor.execute(sql)
    # 获取所有记录列表
    results = cursor.fetchall()
    for row in results:
        fname = row[0]
        lname = row[1]
        sex = row[2]
        income = row[3]
        # 打印结果
        print("fname=%s, lname=%s, sex=%s ,income=%d" % (fname, lname, sex, income))
    # 关闭数据库连接
    db.close()
    

      嗯哼,,完美运行

  • 相关阅读:
    for,foreach,$.each()跳出循环的比较
    十大经典排序算法
    沙箱模式以及其使用到的IIFE
    绝对路径和相对路径的区别
    必备的JS调试技巧汇总
    通过.frm表结构和.ibd文件恢复数据
    Jenkins使用QQ邮箱构建邮件提醒服务
    windows常用命令积累
    7.手机屏幕分辨率
    6.移动端App安装包的测试用例
  • 原文地址:https://www.cnblogs.com/mmykdbc/p/7446967.html
Copyright © 2011-2022 走看看