使用python脚本

时间:2016-09-28 15:08:39

标签: python mongodb teamcity pymongo

我希望能够创建一个新的空集合,每次调用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 个答案:

答案 0 :(得分:0)

我想您知道要修改哪个集合。如果这样做,您只需将集合添加为命令的另一个参数:

之后,您可以使用sys.argv或专门用于解析命令行参数的库来获取命令行参数。 python 3标准库包含argpase(https://docs.python.org/3/library/argparse.html)。不过我建议使用点击(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