Flask连接MySQL时提示expected string or bytes-like object
时间: 2024-12-14 10:28:25 浏览: 5
当你在使用Flask框架连接MySQL数据库时,遇到"expected string or bytes-like object"这样的错误通常是由于数据类型不匹配造成的。Python在尝试将非字符串类型的值转换为字符串以便用于SQL查询。这种错误常见于传递参数给SQL查询函数,如`flask_sqlalchemy ORM`中的`session.query()`。
例如,如果你直接将一个字典作为参数传递,而没有先将其转化为字符串形式,就会触发这个错误。正确的做法应该是:
1. 对需要插入到SQL查询中的非字符串值进行编码(如JSON对象转成json.dumps()格式)。
2. 使用占位符(如`:param_name`)并设置参数,让ORM自动处理类型转换。
修复代码示例:
```python
from flask import request
import json
params = {'key': request.json.get('value')} # 将请求体解析为字典
sql_query = "SELECT * FROM table WHERE column = %s" # 使用占位符
params['column'] = str(params['key']) # 转换为字符串类型
result = session.execute(sql_query, params)
```
阅读全文