• 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()
    

      嗯哼,,完美运行

  • 相关阅读:
    vue—子调父 $emit (把子组件的数据传给父组件)
    解决 Error: EBUSY: resource busy or locked, rmdir 'E:/...'问题
    php中session原理及安全性问题
    MySQL函数大全及用法示例
    php基础语法
    常用sql语句
    php表单传值--GET和POST
    jQuery插件的使用方法
    $.ajax()方法详解
    php文件上传
  • 原文地址:https://www.cnblogs.com/mmykdbc/p/7446967.html
Copyright © 2020-2023  润新知