python - 迁移到 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}")
解决方案
您可以将所有变量作为参数传递
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注入等安全优势。您可以在此处阅读文档
推荐阅读
- python - 将python转换为SML
- eclipse - 无法在 Eclipse Git Remote Tracking 中为一台机器获取新分支
- excel - VBA:带双引号的公式
- vb.net - 使用 ExcelPackage 类库在工作表中结束行
- android - 有没有办法从 Play 商店的即时应用程序中删除“试用”按钮
- javascript - 如何使用 datepicker 过滤 chart.js?
- azure - 如何从 Azure 容器应用服务向 Azure ACR 进行身份验证
- python - AWS ECS 服务 HTTP 请求未重定向?
- python - 耗时的矩阵运算
- android - Kotlin - 使用 listOf() 创建以列表为参数的新列表