使用python将数据插入mongodb

使用python将数据插入mongodb,python,mongodb,connection,database,Python,Mongodb,Connection,Database,我应该在每次插入时重新初始化连接吗 class TwitterStream: def __init__(self, timeout=False): while True: dump_data() def dump_data: ##dump my data into mongodb ##should I be doing this every time??: client=MongoClient() mongo=MongoClient(

我应该在每次插入时重新初始化连接吗

class TwitterStream:
  def __init__(self, timeout=False):
  while True:
    dump_data()

  def dump_data:
    ##dump my data into mongodb    
    ##should I be doing this every time??:
    client=MongoClient()
    mongo=MongoClient('localhost',27017)
    db=mongo.test
    db.insert('some stuff':'other stuff')
    ##dump data and close connection
    #########################
每次写记录时是否需要打开连接?或者,假设每秒向数据库写入5次,每次大约10kb,我可以保持连接打开吗


如果只有一个连接就足够了,我应该在哪里定义保持连接的变量(
client
mongo
db

在MongoClient的情况下,您应该能够保持连接处于打开状态并继续重用它。但是,由于连接持续时间较长,最终您将开始遇到连接问题。建议的解决方案是将MongoClient配置为使用自动重新连接,并捕获自动重新连接异常作为重试机制的一部分

以下是上述方法的一个示例,摘自:


打开连接通常是一项昂贵的操作,因此我建议您尽可能地重用它们

在MongoClient的情况下,您应该能够保持连接处于打开状态并继续重用它。但是,由于连接持续时间较长,最终您将开始遇到连接问题。建议的解决方案是将MongoClient配置为使用自动重新连接,并捕获自动重新连接异常作为重试机制的一部分

以下是上述方法的一个示例,摘自:


打开一个在程序期间有效的MongoClient:

client = MongoClient()

class TwitterStream:
    def dump_data:
        while True:
            db = client.test
            db.insert({'some stuff': 'other stuff'})
打开单个MongoClient意味着您只需支付一次启动成本,其连接池将最大限度地降低打开新连接的成本

如果您担心偶尔会出现网络问题,请将您的操作包装在异常块中:

try:
    db.insert(...)
except pymongo.errors.ConnectionFailure:
    # Handle error.
    ...

打开一个在程序期间有效的MongoClient:

client = MongoClient()

class TwitterStream:
    def dump_data:
        while True:
            db = client.test
            db.insert({'some stuff': 'other stuff'})
打开单个MongoClient意味着您只需支付一次启动成本,其连接池将最大限度地降低打开新连接的成本

如果您担心偶尔会出现网络问题,请将您的操作包装在异常块中:

try:
    db.insert(...)
except pymongo.errors.ConnectionFailure:
    # Handle error.
    ...

非常感谢你对这个问题的回答。你能给我举几个例子吗?一路站在你的立场上,你所说的我不知道如何实施。非常感谢你对这个问题的伟大回答。你能给我举几个例子吗?一路站在你的立场上,你所说的我都不知道如何实施。