From 9cee078c25d538ced74b88fff58f4b2a69be7c19 Mon Sep 17 00:00:00 2001 From: yanshushuang Date: Thu, 10 Oct 2024 15:54:55 +0800 Subject: [PATCH 1/4] =?UTF-8?q?mongodb=20comment=20=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/engines/mongo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/engines/mongo.py b/sql/engines/mongo.py index 534971fd8f..b864f4eedd 100644 --- a/sql/engines/mongo.py +++ b/sql/engines/mongo.py @@ -534,8 +534,8 @@ def execute_check(self, db_name=None, sql=""): # 执行语句 for check_sql in sp_sql: alert = "" # 警告信息 + check_sql = check_sql.strip() if not check_sql == "" and check_sql != "\n": - check_sql = check_sql.strip() # check_sql = f'''{check_sql}''' # check_sql = check_sql.replace('\n', '') #处理成一行 # 支持的命令列表 From f30b2884d287ec1403e692496f9eeb666c4cf5ea Mon Sep 17 00:00:00 2001 From: yanshushuang Date: Tue, 15 Oct 2024 09:04:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96slave?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/engines/mongo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/engines/mongo.py b/sql/engines/mongo.py index b864f4eedd..59b31b0da8 100644 --- a/sql/engines/mongo.py +++ b/sql/engines/mongo.py @@ -368,7 +368,7 @@ def _build_cmd( else: cmd_template = ( "{mongo} --quiet {auth_options} {host}:{port}/{auth_db} <<\\EOF\n" - "db=db.getSiblingDB('{db_name}');{slave_ok}printjson({sql})\nEOF" + "db=db.getSiblingDB('{db_name}');{slave_ok}{sql}\nEOF" ) # 长度不超限直接mongo shell,无需临时文件 common_params["sql"] = sql @@ -397,7 +397,7 @@ def get_slave(self): sql = """var host=""; rs.status().members.forEach(function(item) {i=1; if (item.stateStr =="SECONDARY") \ {host=item.name } }); print(host);""" - slave_msg = self.exec_cmd(sql) + slave_msg = self.exec_cmd(sql,db_name=self.db_name) # 如果是阿里云的云mongodb,会获取不到备节点真实的ip和端口,那就干脆不获取,直接用主节点来执行sql # 如果是自建mongodb,获取到备节点的ip是192.168.1.33:27019这样的值;但如果是阿里云mongodb,获取到的备节点ip是SECONDARY、hiddenNode这样的值 # 所以,为了使代码更加通用,通过有无冒号来判断自建Mongod还是阿里云mongdb;没有冒号就判定为阿里云mongodb,直接返回false; From 5e48010854b21ed4949cc73b6a103e9dadd65ee6 Mon Sep 17 00:00:00 2001 From: yanshushuang Date: Tue, 15 Oct 2024 09:20:23 +0800 Subject: [PATCH 3/4] lint --- sql/engines/mongo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/engines/mongo.py b/sql/engines/mongo.py index 59b31b0da8..4214a03845 100644 --- a/sql/engines/mongo.py +++ b/sql/engines/mongo.py @@ -397,7 +397,7 @@ def get_slave(self): sql = """var host=""; rs.status().members.forEach(function(item) {i=1; if (item.stateStr =="SECONDARY") \ {host=item.name } }); print(host);""" - slave_msg = self.exec_cmd(sql,db_name=self.db_name) + slave_msg = self.exec_cmd(sql, db_name=self.db_name) # 如果是阿里云的云mongodb,会获取不到备节点真实的ip和端口,那就干脆不获取,直接用主节点来执行sql # 如果是自建mongodb,获取到备节点的ip是192.168.1.33:27019这样的值;但如果是阿里云mongodb,获取到的备节点ip是SECONDARY、hiddenNode这样的值 # 所以,为了使代码更加通用,通过有无冒号来判断自建Mongod还是阿里云mongdb;没有冒号就判定为阿里云mongodb,直接返回false; From aa71415d52edeb8d22524efdd066191ace3e36ac Mon Sep 17 00:00:00 2001 From: yanshushuang Date: Tue, 15 Oct 2024 09:23:18 +0800 Subject: [PATCH 4/4] edit mongo test --- sql/engines/test_mongo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/engines/test_mongo.py b/sql/engines/test_mongo.py index 4046029499..f1cb453df7 100644 --- a/sql/engines/test_mongo.py +++ b/sql/engines/test_mongo.py @@ -48,7 +48,7 @@ def test_build_cmd_without_load(mongo_engine): # Expected command template expected_cmd = ( "mongo --quiet -u test_user -p 'test_password' localhost:27017/admin <<\\EOF\n" - "db=db.getSiblingDB('test_db');rs.slaveOk();printjson(db.test_collection.find())\nEOF" + "db=db.getSiblingDB('test_db');rs.slaveOk();db.test_collection.find()\nEOF" ) # Assertions @@ -72,7 +72,7 @@ def test_build_cmd_without_auth(mongo_engine): # Expected command template expected_cmd = ( "mongo --quiet localhost:27017/admin <<\\EOF\n" - "db=db.getSiblingDB('test_db');rs.slaveOk();printjson(db.test_collection.find())\nEOF" + "db=db.getSiblingDB('test_db');rs.slaveOk();db.test_collection.find()\nEOF" ) # Assertions