一尘不染

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

sql

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使用标准语法,但是我还没有使其工作。有什么建议?


阅读 152

收藏
2021-03-08

共1个答案

一尘不染

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

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

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

2021-03-08