Обновить коллекцию MongoDB с помощью скрипта python

Я хочу иметь возможность создать новую пустую коллекцию, которая будет обновляться при каждом вызове скрипта python. Я знаю, что для создания коллекции я могу просто использовать pymongo следующим образом:

from pymongo import MongoClient 

db = MongoClient('my.ip.add.ress', 27017)['xxxx'] #connect to client
db.createCollection("colName")                    #create empty collection

Я хочу иметь возможность обновлять его с помощью сценариев, которые я называю (в частности, из Team City), как:

python update.py --build-type xyz --status xyz

Как это сделать, чтобы скрипт обновил нужную коллекцию?

1 ответ

  1. Я полагаю, вы знаете, какую коллекцию вы хотите изменить. Если вы это сделаете, вы можете просто добавить коллекцию в качестве другого аргумента к вашей команде:

    После этого можно получить аргументы командной строки с помощью sys.argv или библиотека, специально написанная для разбора аргументов командной строки. Стандартная библиотека python 3 включает argpase ( https://docs.python.org/3/library/argparse.html ). Однако я бы предложил использовать click ( http://click.pocoo.org/5/ ).

    Сохраните следующее Как cli.py

    import click
    from pymongo import MongoClient
    
    
    MONGOHOST = 'localhost'
    MONGOPORT = 27017
    
    
    @click.command()
    @click.option('--db', help='Database', required=True)
    @click.option('--col', help='Collection', required=True)
    @click.option('--build_type', help='Build Type', required=True)
    @click.option('--status', help='Status', required=True)
    def update(db, col, build_type, status):
        mongocol = MongoClient(MONGOHOST, MONGOPORT)[db][col]
        mongocol.insert_one({'build_type': build_type, 'status': status})
        # You could also do: mongocol.find_and_modify() or whatever...
    
    if __name__ == '__main__':
        update()
    

    Затем выполните команду типа:

    python cli.py --db=test --col=test --build_type=staging --sta
    tus=finished
    

    убедитесь, что у вас есть pymongo и нажмите кнопку установлен:

    pip install pymongo click