更改python MySQLdb模块的参数样式



我默认的mysql参数是:'format'

>>>MySQLdb.paramstyle
'format'

我想将默认的参数样式更改为'pyformat',因为我可以查询类似"WHERE name=%(name)s"的东西。有什么办法吗?

我很确定这是不可能的,没有在库的内部瞎折腾…—paramstyle硬编码符合PEP 249。

还要注意转义总是使用tuple

我想你可以让它工作,如果你替换:

if args is not None:
    query = query % tuple(( get_codec(a, self.encoders)(db, a) for a in args ))

,例如:

if args is not None:
    if isinstance(args, tuple):
        args = tuple(get_codec(a, self.encoders)(db, a) for a in args)
    elif isinstance(args, dict):
        args = {k: get_codec(a, self.encoders)(db, a) for a in args}
    query = query % args

在这里,您可能希望在Cursor子类中执行此操作,并且可以将其作为参数传递给连接…

最终,这有点"吓人",因为重写整个execute方法可能会迫使您使用一堆不在"公共"API中的东西,但至少应该是可能的。

最新更新