10.数据库命令操作 runCommand()

1.命令执行器runCommand

1.1用命令执行完成一次删除表的操作

db.runCommand({drop:"map"}) {         
"nIndexesWas" : 2,         
"msg" : "indexes dropped for collection",         
"ns" : "foobar.map",         
"ok" : 1 
}

2.如何查询mongoDB为我们提供的命令

1.在shell中执行 db.listCommands()
2.访问网址 http://localhost:28017/_commands (需要在mongod服务启动时进行–rest的参数配置)

3.常用命令举例

3.1查询服务器版本号和主机操作系统

db.runCommand({buildInfo:1})     
{
        "version" : "2.0.4",
        "gitVersion" : "329f3c47fe8136c03392c8f0e548506cb21f8ebf",
        "sysInfo" : "windows sys.getwindowsversion(major=6, minor=0, build=6002,
 platform=2, service_pack='Service Pack 2') BOOST_LIB_VERSION=1_42",
        "versionArray" : [
                2,
                0,
                4,
                0
        ],
        "bits" : 32,
        "debug" : false,
        "maxBsonObjectSize" : 16777216,
        "ok" : 1
}

3.2查询执行集合的详细信息,大小,空间,索引等……

db.runCommand({collStats:"persons"}) 
{
        "ns" : "persons.persons",
        "count" : 12,
        "size" : 2344,
        "avgObjSize" : 195.33333333333334,
        "storageSize" : 12288,
        "numExtents" : 1,
        "nindexes" : 1,
        "lastExtentSize" : 12288,
        "paddingFactor" : 1,
        "flags" : 1,
        "totalIndexSize" : 8176,
        "indexSizes" : {
                "_id_" : 8176
        },
        "ok" : 1
}

3.3查看操作本集合最后一次错误信息

 db.runCommand({getLastError:"persons"}) 
{ "n" : 0, "connectionId" : 1, "err" : null, "ok" : 1 }

显示没有操作错误

### 使用 `subprocess.run` 执行数据库相关命令 在 Python 中,`subprocess.run` 是一种强大的工具,用于运行外部命令并捕获其输出。对于 MySQL 数据库的备份或导入操作,可以通过该方法执行相应的 shell 命令。 以下是实现的具体方式: #### 备份 MySQL 数据库 通过 `mysqldump` 工具可以完成数据库的导出工作。下面是一个使用 `subprocess.run` 进行数据库备份的例子: ```python import subprocess def backup_mysql_database(user, password, host, database, output_file): command = [ 'mysqldump', '--user=' + user, '--password=' + password, '--host=' + host, database ] with open(output_file, 'w') as f: result = subprocess.run(command, stdout=f, stderr=subprocess.PIPE) if result.returncode != 0: raise Exception(f"Backup failed: {result.stderr.decode()}") ``` 此函数接受用户名、密码、主机名、数据库名称以及输出文件作为参数,并将备份结果保存到指定文件中[^1]。 #### 导入 MySQL 数据库 同样也可以利用 `subprocess.run` 来恢复数据至目标数据库: ```python def restore_mysql_database(user, password, host, database, input_file): command = [ 'mysql', '--user=' + user, '--password=' + password, '--host=' + host, database ] with open(input_file, 'r') as f: result = subprocess.run(command, stdin=f, stderr=subprocess.PIPE) if result.returncode != 0: raise Exception(f"Restore failed: {result.stderr.decode()}") ``` 上述代码片段展示了如何读取 SQL 文件并将内容加载回数据库。 需要注意的是,在 Windows 平台上可能需要提供完整的 mysqldump 和 mysql 可执行程序路径;而在 Linux 上通常可以直接调用这些工具的名字而无需全限定路径。 另外,如果项目依赖于某些特定模块如 Tornado 或 Redis,则应先安装它们及其关联包 (例如 dateutil),这可通过 pip 完成,但需具备适当权限来写入 /usr/ 路径下的目录结构[^2]: ```bash pip install argparse tornado tornadoredis redis python-dateutil ``` 最后提醒一点,当处理敏感信息比如数据库凭证时要格外小心,考虑环境变量或者配置管理解决方案而不是硬编码字符串值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值