python 写入mysql时,提示编码错误,使用cursor.execute('SET third_subject_name utf8mb4;')后提示错误
时间: 2023-12-10 17:38:22 浏览: 112
在使用 `SET` 命令设置数据库编码时,应该使用 `SET NAMES utf8mb4;` 命令来设置编码,而不是使用 `SET third_subject_name utf8mb4;` 命令。
所以,你应该改为使用以下代码来设置编码:
```python
cursor.execute('SET NAMES utf8mb4;')
```
另外,如果你需要在插入数据时指定编码,可以在连接 MySQL 数据库时指定编码,例如:
```python
import mysql.connector
cnx = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name', charset='utf8mb4')
```
这样,在插入数据时,就可以直接使用 UTF-8 编码了。
相关问题
python 写入mysql 提示编码方式不对, 使用了 cursor.execute('SET NAMES utf8;')也不成
如果使用 `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 注入攻击,并且避免编码问题。
python 写入mysql 提示编码方式不对
当你向 MySQL 数据库写入数据时,可能会遇到编码问题。这通常是因为 Python 和 MySQL 之间使用了不同的编码方式。
解决这个问题的方法是在连接 MySQL 数据库时设置正确的编码方式。例如,如果你的 MySQL 数据库使用 utf8 编码,可以使用以下代码连接数据库:
```python
import mysql.connector
cnx = mysql.connector.connect(user='username', password='password',
host='localhost', database='database_name',
charset='utf8')
```
这里的 `charset` 参数设置为 `utf8`,这样就可以确保 Python 和 MySQL 使用相同的编码方式。
如果你已经连接到数据库,但是仍然遇到编码问题,可以尝试在执行 SQL 语句之前设置编码方式。例如:
```python
cursor = cnx.cursor()
cursor.execute('SET NAMES utf8;')
```
这将设置 MySQL 连接的编码方式为 `utf8`,从而解决编码问题。
阅读全文