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
-查看提供的代码有助于我识别您的问题。这并不能回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论-