【问题标题】:How to rename a mongodb database using pymongo?如何使用 pymongo 重命名 mongodb 数据库?
【发布时间】:2013-09-05 21:50:46
【问题描述】:

我需要重命名使用pymongo 创建的数据库。我想用pymongo 来做。我发现this other stackoverflow question 非常相似,并且代码 sn-ps 看起来像 pythonesque,除了 use 关键字使它...我不知道是什么(更新:可能是 Perl?)。

我做了一个

client.copy_database('old_name', 'new_name)

然后发现我在“client.database_names()”中有new_name。但是里面好像没有收藏?我还需要做什么,使用 pymongo 命令深度复制数据库?

【问题讨论】:

  • copy_database 是正确的方法。您确定该命令成功并且您复制了正确的数据库吗?

标签: python mongodb pymongo


【解决方案1】:

从 PyMongo 3.0 开始,您必须使用 admin.command,因为 copy_database was removed in 3.0

client.admin.command('copydb',
                     fromdb='source_db_name',
                     todb='target_db_name')

【讨论】:

    【解决方案2】:
    import pymongo
    client = pymongo.MongoClient()
    
    client.copy_database('foo', 'bar')
    
    assert set(client['foo'].collection_names()) == set(client['bar'].collection_names())
    
    for collection in client['foo'].collection_names():
        assert client['foo'][collection].count() == client['bar'][collection].count()
    
    client.drop_database('foo')
    

    【讨论】:

    • 我试过这个。它甚至回答了 True。但是当我做for e in client.old_name.twigs.find(): print(e) 时,我看到了很多东西。但是当我做for e in client.new_name.twigs.find(): print(e) 时,它什么也没打印。这让我觉得它不是真正的深拷贝?
    • 我无法拼写自己的数据库名称。叹。当。对不起。 (解释一下,它确实起作用了)
    猜你喜欢
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2021-06-08
    • 2021-04-10
    相关资源
    最近更新 更多