如何打印或记录实际执行的查询语句,例如Django插入,查询和其他SQL语句

将如何记录或打印实际执行的查询语句,例如Django插入,查询和其他SQL语句。我搜索了两个库的文档,却一无所获。

我想要类似于django的东西,因为我可以执行任何查询,例如User.object.filter(name='123').values("id","phone")并记录该查询的实际执行语句:select id,phone from auth_user where name='123'

SHIRPEY 回答:如何打印或记录实际执行的查询语句,例如Django插入,查询和其他SQL语句

我相信您有2种选择:

1)使用pymongo.monitoring,MongoEngine文档中的link显示了如何配置它。

2)使用db.setProfilingLevel(2)打开分析,然后所有查询将添加到db.system.profile collection中。 例如:执行此db.users.findOne({'name': 'abc'}),会将以下内容添加到db.system.profile集合中:

{
    "op" : "query","ns" : "myDb.users","command" : {
        "find" : "users","filter" : {
            "name" : "abc"
        },"limit" : 1,....
        "$db" : "myDb"
    },"keysExamined" : 0,"docsExamined" : 0,"cursorExhausted" : true,"numYield" : 0,"locks" : {...},"nreturned" : 0,"responseLength" : 83,"protocol" : "op_msg","millis" : 0,"planSummary" : "EOF",...
    "ts" : ISODate("2019-11-20T19:27:13.297Z"),"appName" : "MongoDB Shell","allUsers" : [ ],"user" : ""
}

不幸的是,您可以看到,它不像SQL查询那样实用,但是其中的信息仍然存在

本文链接:https://www.f2er.com/3074687.html

大家都在问