파이썬(Python)/웹서버

mongodb 두개의 프로그램으로 쓰면서 읽기

끄적끄적아무거나 2020. 12. 17. 18:11
반응형

 

이번 주제는 하나의 프로그램이 db에 쓰기만을 하는 동안 다른 프로그램에서 해당 db에 접속해서 읽는동작만 하는 것을 구현하였다.

 

일초 단위로 읽고 쓰고 읽는 값은 마지막 3개의 값만 출력하는 것으로 하였다.

 

파이썬으로 작성하였고 pymongo로 동작한다.

 

아래 코드를 통해 이해해 보자.

 

코드 - write.py>>

from pymongo import MongoClient 
from time import sleep


my_client = MongoClient("mongodb://localhost:27017/") 

db = my_client['number_inc'] 
db_col = db.numbers
idx = 0
while True:
    post = {
        "num": idx,
    }

    db_col.insert_one(post)
    idx = idx + 1
    sleep(1)

 

코드 - read.py>>

from pymongo import MongoClient 
from time import sleep

my_client = MongoClient("mongodb://localhost:27017/") 

db = my_client['number_inc'] 
db_col = db.numbers

while True:
    num = db_col.find().sort("_id", -1).limit(3)
    for _ in num:
        print(_)
    
    # print(num[-1])
    sleep(1)

 

결과 및 주석>>

{'_id': ObjectId('5fdb1f8e075ce2770c45a6b3'), 'num': 4}
{'_id': ObjectId('5fdb1f8d075ce2770c45a6b2'), 'num': 3}
{'_id': ObjectId('5fdb1f8c075ce2770c45a6b1'), 'num': 2}
{'_id': ObjectId('5fdb1f8f075ce2770c45a6b4'), 'num': 5}
{'_id': ObjectId('5fdb1f8e075ce2770c45a6b3'), 'num': 4}
{'_id': ObjectId('5fdb1f8d075ce2770c45a6b2'), 'num': 3}
{'_id': ObjectId('5fdb1f90075ce2770c45a6b5'), 'num': 6}
{'_id': ObjectId('5fdb1f8f075ce2770c45a6b4'), 'num': 5}
{'_id': ObjectId('5fdb1f8e075ce2770c45a6b3'), 'num': 4}
{'_id': ObjectId('5fdb1f91075ce2770c45a6b6'), 'num': 7}
{'_id': ObjectId('5fdb1f90075ce2770c45a6b5'), 'num': 6}
{'_id': ObjectId('5fdb1f8f075ce2770c45a6b4'), 'num': 5}
{'_id': ObjectId('5fdb1f92075ce2770c45a6b7'), 'num': 8}
{'_id': ObjectId('5fdb1f91075ce2770c45a6b6'), 'num': 7}
{'_id': ObjectId('5fdb1f90075ce2770c45a6b5'), 'num': 6}
{'_id': ObjectId('5fdb1f93075ce2770c45a6b8'), 'num': 9}
{'_id': ObjectId('5fdb1f92075ce2770c45a6b7'), 'num': 8}
{'_id': ObjectId('5fdb1f91075ce2770c45a6b6'), 'num': 7}

read.py에서는 마지막 3개를 db에서 계속 가져와서 출력하고 write.py는 1초마다 계속 증가된 숫자를 넣어준다.

반응형