python 写入mysql 提示编码方式不对, 使用了 cursor.execute('SET NAMES utf8;')也不成
时间: 2023-12-10 11:38:10 浏览: 77
如果使用 `cursor.execute('SET NAMES utf8;')` 之后仍然无法解决编码问题,可以尝试使用以下方法:
1. 在连接 MySQL 时指定编码方式,例如:
```python
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8')
```
2. 在创建 `cursor` 对象时设置 `charset` 属性,例如:
```python
cursor = conn.cursor(charset='utf8')
```
3. 在执行 SQL 语句时,将参数使用 `pymysql.escape_string()` 函数进行转义,例如:
```python
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', database='test')
cursor = conn.cursor()
name = "张三"
age = 20
sql = "INSERT INTO student (name, age) VALUES (%s, %s)"
cursor.execute(sql, (pymysql.escape_string(name), age))
conn.commit()
cursor.close()
conn.close()
```
在上面的例子中,使用了 `pymysql.escape_string()` 函数对参数 `name` 进行了转义,以防止 SQL 注入攻击,并且避免编码问题。
阅读全文