本帖最后由 Leo06 于 2018-10-22 23:25 编辑
完整代码: #coding: utf-8 import pymysql # 打开数据库连接 db =pymysql.connect("localhost","root","00000000","TESTDB",use_unicode=True,charset="utf8") #若没有 use_unicode=True, charset="utf8" 那么就会发生如题错误: #使用cursor()方法获取操作游标 cursor =db.cursor() # SQL 插入语句 sql ="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('张三', '李四', 20, '男', 1000)""" #db.set_character_set('utf8') cursor.execute('SETNAMES utf8;') cursor.execute('SETCHARACTER SET utf8;') cursor.execute('SETcharacter_set_connection=utf8;')
try: #执行sql语句 cursor.execute(sql) #提交到数据库执行 db.commit() print(" 没有错误!") except Exceptionas e: print(e) #如果发生错误则回滚 print(" 发生错误") db.rollback() # 关闭数据库连接 db.close()
问题原因: pymysql 正常情况下会尝试将所有的内容转为latin1字符集处理
解决思路: 设置连接和游标的charset为所希望的编码,如utf8
|