我需要为RethinkDB的run()
方法添加一些额外的功能。以下是我的想法:
from rethinkdb.ast import RqlQuery
class ExtendedRqlQuery(RqlQuery):
def run(self, c=None, **global_optargs):
if not c:
with connection.get_conn() as conn:
return super(ExtendedRqlQuery, self).run(conn, **global_optargs)
else:
return super(ExtendedRqlQuery, self).run(c, **global_optargs)
RqlQuery = ExtendedRqlQuery
问题是,如果我在没有任何连接参数的情况下运行查询,则会发生default behavior,就像我的补丁没有生效一样。我做错了什么?
修改
我已经进行了测试,这对我来说似乎很奇怪:
import rethinkdb as r
# Here is where I do my patching
import .utils
class Test(TestCase):
def test(self):
print r.ast.RqlQuery
r.table('table').insert({'a': 1}).run()
print语句显示<class 'remodel.utils.ExtendedRqlQuery'>
(这是正确的),但以下语句仍使用rethinkdb/ast.py
处的原始文件。