我默认的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中的东西,但至少应该是可能的。