首页 > 解决方案 > 迁移到 Ubuntu 后查询的 SQL ROW_NUMBER() 问题

问题描述

将我的项目移动到服务器时,我遇到了“(”附近的问题:语法错误。使用 VSC 一切正常,但是在启动程序并调用函数后将项目从 Windows 移动到 Ubuntu 后,会弹出前面提到的错误。是有什么解决方案可以解决吗?也许与这个查询相当?我用 Python 3 编写代码并使用 SQLite3。

cursor.execute(f"SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY lvl DESC, exp DESC) AS rownumber, guild_id, user_id, lvl, exp FROM levels WHERE guild_id = '{ctx.guild.id}') WHERE user_id = {ctx.author.id}")

标签: pythonwindowssqliteubuntu

解决方案


您可以将所有变量作为参数传递

query = "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY lvl DESC, exp DESC) " \
        "AS rownumber, guild_id, user_id, lvl, exp " \
        "FROM levels WHERE guild_id = %s) WHERE user_id = %s"
args = (ctx.guild.id,ctx.guild.id)

cursor.execute( query,args )

这种方法具有避免sql注入等安全优势。您可以在此处阅读文档


推荐阅读