Python错误解决:UnicodeEncodeError: 'latin-1' codec can't encode characters in position

在使用Python3的模块PyMysql连接数据库时,怎么都无法插入,报了这个异常

各种倒腾后发现是在连接的时候没有指定以什么编码连接导致的错误

之前的代码:

#!/usr/bin/python3

import pymysql


def insert_law(title, content):
    # 打开数据库连接
    db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='law')

    # 使用cursor()方法获取操作游标
    cursor = db.cursor()

    # SQL 插入语句
    sql = 'INSERT INTO tb_law(title, content) \
           VALUES (\'%s\', \'%s\' )' % \
          (title, content)
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 执行sql语句
        db.commit()
    except Exception as e:
        print(e)
        db.rollback()

    # 关闭数据库连接
    db.close()

在pymysql.connect 之后指定 charset='utf8'

#!/usr/bin/python3

import pymysql


def insert_law(title, content):
    # 打开数据库连接
    db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='law', charset='utf8')

    # 使用cursor()方法获取操作游标
    cursor = db.cursor()

    # SQL 插入语句
    sql = 'INSERT INTO tb_law(title, content) \
           VALUES (\'%s\', \'%s\' )' % \
          (title, content)
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 执行sql语句
        db.commit()
    except Exception as e:
        print(e)
        db.rollback()

    # 关闭数据库连接
    db.close()

错误解决

你可能感兴趣的:(python,mysql,python,mysql)