在python MySQLdb模块上更改paramstyle

时间:2014-08-11 06:06:55

标签: python mysql

我的默认mysql paramstle是:'格式'

>>>MySQLdb.paramstyle
'format'

我想将默认的paramstyle更改为' pyformat' ,因为我可以查询类似" WHERE name =%(name)s"。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

我非常确定如果不在图书馆内部进行整理,这是不可能的...... - paramstyle hardcoded符合PEP 249

另请注意escaping always uses a 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子类中这样做 - 你可以将它作为参数传递给连接...

最终,这有点像毛茸茸的"因为重写整个执行方法可能会迫使你使用一堆不在" public" API,但它至少应该是可能的。