Python 错误:只能将str(而不是“int”连接到str
您好,这是我目前收到的错误Python 错误:只能将str(而不是“int”连接到str,python,sqlalchemy,Python,Sqlalchemy,您好,这是我目前收到的错误 > [2020-12-02 18:49:37,772] ERROR in app: Exception on /new-mealplan > [POST] Traceback (most recent call last): File > "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\app.py", > line 2447,
> [2020-12-02 18:49:37,772] ERROR in app: Exception on /new-mealplan
> [POST] Traceback (most recent call last): File
> "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\app.py",
> line 2447, in wsgi_app
> response = self.full_dispatch_request() File "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\app.py",
> line 1952, in full_dispatch_request
> rv = self.handle_user_exception(e) File "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask_cors\extension.py",
> line 165, in wrapped_function
> return cors_after_request(app.make_response(f(*args, **kwargs))) File
> "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\app.py",
> line 1821, in handle_user_exception
> reraise(exc_type, exc_value, tb) File "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\_compat.py",
> line 39, in reraise
> raise value File "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\app.py",
> line 1950, in full_dispatch_request
> rv = self.dispatch_request() File "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\flask\app.py",
> line 1936, in dispatch_request
> return self.view_functions[rule.endpoint](**req.view_args) File "C:\Users\ryand\Desktop\mealplansfree\main-api\api.py", line 125, in
> create_mealplan
> recipe_id_to_output = str(current_recipe['id']) File "c:\users\ryand\.virtualenvs\main-api-ucgvpon1\lib\site-packages\sqlalchemy\orm\query.py",
> line 3208, in __getitem__
> return list(self[item : item + 1])[0] TypeError: can only concatenate str (not "int") to str
> 127.0.0.1 - - [02/Dec/2020 18:49:37] "POST /new-mealplan HTTP/1.1" 500 -
在我的代码中,我在当前配方['id]周围添加了str(),因为环顾四周后,我读到了可以解决问题的内容。事实并非如此
这是我的密码:
@app.route('/new-mealplan', methods=['POST'])
def create_mealplan():
data = request.get_json()
recipes = data['mealplan_recipes']
recipe_ids = []
for recipe in recipes:
current_recipe = Recipes.query.filter(func.lower(Recipes.recipe_name) == func.lower(recipe))
if current_recipe:
recipe_id_to_output = str(current_recipe['id']) # THIS IS THE LINE THE ERROR IS POINTS TOO
recipe_ids.append(recipe_id_to_output)
return jsonify({ 'Mealplan' : recipe_ids })
我所要做的就是使用我在POST请求中提交的配方名称,然后取下我提交的每个名称,并将配方的配方ID附加到配方ID中。恰恰相反,您应该在其周围添加
int(…)
它试图将1
添加到项
中,但实际上它不能是字符串
编辑:不是这个,而是对库的错误使用。在查询之后忘记了
.first()
来实际检索结果。这个怎么样:配方id到输出=“{}”。格式化(当前配方['id'])
我刚刚试过,但没有成功。同样的错误。这是那一行:recipe\u id\u to\u output=int(当前配方['id'])哦,好的。这是一个大胆的猜测,可能很容易解决,但如果排除了这一点,那么问题在于'id'
是一个字符串。你可能用错了图书馆。你的意思可能是current\u recipe.id
。这给了我recipe\u id\u to\u output=int(current\u recipe.id)AttributeError:“BaseQuery”对象没有属性“id”
,所以我认为原始的会起作用。我只是阅读了文档和示例用法,你需要。首先()
之后是。过滤器(…)
以实际获得结果。请随意从这里了解用法:https://docs.sqlalchemy.org/en/13/orm/tutorial.html
-查看提供的代码有助于我识别您的问题。这并不能回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论-