Python TypeError:int()参数必须是字符串、类似字节的对象或数字,而不是';结果';

Python TypeError:int()参数必须是字符串、类似字节的对象或数字,而不是';结果';,python,sqlalchemy,Python,Sqlalchemy,我正在尝试获取最高的id并添加一个以创建新id。当我尝试启动它时(它为null,因为那里还没有任何内容),它会给我以下错误:TypeError:int()参数必须是字符串、类似对象或数字的字节,而不是“result” @app.route('/new recipe',methods=['POST']) def创建_配方(应用程序): data=request.get_json() 当前_id=int(db.session.query(func.max(Recipes.id)).first())

我正在尝试获取最高的id并添加一个以创建新id。当我尝试启动它时(它为null,因为那里还没有任何内容),它会给我以下错误:
TypeError:int()参数必须是字符串、类似对象或数字的字节,而不是“result”

@app.route('/new recipe',methods=['POST'])
def创建_配方(应用程序):
data=request.get_json()
当前_id=int(db.session.query(func.max(Recipes.id)).first())
#我也尝试过不使用int()。
如果当前\u id>=1:
新建\u id=当前\u id+1
新配方=配方(id=新配方)
返回新的\u recipe.id
其他:
新配方=配方(id=1)
返回新的\u recipe.id
您可以使用
.scalar()
将结果转换为值

current_id = db.session.query(func.max(Recipes.id)).scalar()

但是,我对您的方法有一点看法:最好让数据库为您生成ID,因为当多人同时访问
/new recipe
时,像您这样的代码可能会表现得不可预测

如果您获取最后一个id,然后在单独的查询中进行插入(而不是在数据库事务中),则其他人可以在您之前插入与您尝试插入的id相同的记录。这将导致错误。

您可以使用
.scalar()
将结果转换为值

current_id = db.session.query(func.max(Recipes.id)).scalar()

但是,我对您的方法有一点看法:最好让数据库为您生成ID,因为当多人同时访问
/new recipe
时,像您这样的代码可能会表现得不可预测


如果您获取最后一个id,然后在单独的查询中进行插入(而不是在数据库事务中),则其他人可以在您之前插入与您尝试插入的id相同的记录。这将导致错误。

您是否尝试调试程序?例如,打印出
db.session.query(func.max(Recipes.id)).first()
以查看它是什么,并且您可以获得所需的int。您是否尝试过调试程序?例如,打印出
db.session.query(func.max(Recipes.id)).first()
来查看它是什么,您可以得到所需的int值这就是我所需要的。谢谢,这正是我需要的。非常感谢。