今天在看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()
嗯哼,,完美运行
时间: 2024-10-08 06:37:47