将如何记录或打印实际执行的查询语句,例如Django插入,查询和其他SQL语句。我搜索了两个库的文档,却一无所获。
我想要类似于django的东西,因为我可以执行任何查询,例如User.object.filter(name='123').values("id","phone")
并记录该查询的实际执行语句:select id,phone from auth_user where name='123'
将如何记录或打印实际执行的查询语句,例如Django插入,查询和其他SQL语句。我搜索了两个库的文档,却一无所获。
我想要类似于django的东西,因为我可以执行任何查询,例如User.object.filter(name='123').values("id","phone")
并记录该查询的实际执行语句:select id,phone from auth_user where name='123'
我相信您有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查询那样实用,但是其中的信息仍然存在