当前位置: 首页 > 面试题库 >

如何使用Python Msqldb模块?代替%s的查询参数?

仲俊豪
2023-03-14
问题内容

MySqlDb是一个很棒的Python模块-但其中的一部分令人讨厌。查询参数如下所示

cursor.execute("select * from Books where isbn=%s", (isbn,))

而在已知宇宙中的其他任何地方(oracle,sqlserver,access,sybase …),它们看起来都像这样

cursor.execute("select * from Books where isbn=?", (isbn,))

这意味着,如果您想携带便携式设备,则必须以某种方式在两种表示法之间切换?和%s,这确实很烦人。(请不要告诉我使用ORM层-我会勒死您)。

大概您可以说服mysqldb使用标准语法,但是我还没有使其工作。有什么建议?


问题答案:

我发现那里有很多信息paramstyle,似乎暗示这可能是您想要的,但是根据此Wiki,您必须使用paramstyle您的库使用,并且其中大多数不允许您对其进行更改:

paramstyle特定于您使用的库,并且具有参考意义-
您必须使用它所使用的库。这可能是该标准中最令人讨厌的部分。(一些允许您设置不同paramstyles,但这不是标准行为)

我找到了一些有关MySQLdb允许这样做的帖子,但是显然它不是因为有人指出它不适用于他们。



 类似资料:
  • 问题内容: 在“学习Python的艰难方法”第21页上,我看到以下代码示例: 为什么用这里代替?您什么时候使用,什么时候使用? 问题答案: 该物体使用符转换,并且将其转换使用。 对于某些对象(例如整数),它们产生相同的结果,但是特殊之处在于(对于可能的类型)它通常返回有效的Python语法的结果,该结果可用于明确地重新创建其表示的对象。 这是一个使用日期的示例: 对于该类型不产生Python语法包

  • 问题内容: 现在我要使用 但这行不通,有什么想法吗? 问题答案: SQL不支持表名使用变量/ etc-支持您要求的唯一方法是使用动态SQL:

  • 问题内容: 当我尝试使用此查询时,我收到一条错误消息,指出Perameter电子邮件不存在,我确定变量:email,login_pass,payment_method,operateur是有效的并且存在。 我尝试删除引号,但我得到了 您的Sql语法有错误,请在第1行的’:email,:login_pass,:payment_method,:avecpuce)’附近查看与您的SQL Server对应

  • 我是新来的Node.js,并试图检查如果电子邮件已经通过发送电子邮件作为一个url参数从iOS应用程序。它不起作用,不确定我做错了什么。 我无法console.log前端发送的VSCode中的电子邮件参数,它在XCODE(http://localhost:3000/api/user/email/test@gmail.com)中打印,我知道后端正在获取GET请求。 我的路由器代码是: 非常感谢。

  • 另外,如果是匹配查询,则参数如下所示: 注电子邮件周围没有引号,所以如果您有一个匹配和设置参数查询,您的参数定义如下所示: 有人能解释这种明显的不一致吗? 这将返回未定义的姓氏。

  • 我正尝试使用AWS API网关到另一个服务,如下所示: https://jsonplaceholder.typicode.com/comments?postid=1和postid=2 我遵循API网关API的Map Request Parameters来创建get方法。 所以我在方法执行中有以下内容: