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

  嗯哼,,完美運行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM