1. 程式人生 > >記一次python中使用jinja2模板渲染文字

記一次python中使用jinja2模板渲染文字

起因:

專案中需要通過web表單實現動態為prometheus配置報警規則,我負責後端,需要對資料進行校驗,報警規則有一定的資料格式,但是使用format來格式化的話處理比較麻煩,於是藉助了jinja模板:
import jinja2
rules={
"name":"xxxxxxx",
"rules":[
    {
        "alert": "z1",
        "expr": "up == 0",
        "duration": "1m",
        "enable": 1,
        "labels":{"labels1":"label1","label2"
:"label2"}, "annotations":{"annotations":"annotations"} }, { "alert": "z2", "expr": "up == 0", "duration": "1m", "enable": 1, "labels":{"label1":"label1","label2":"label2"}, "annotations":{"annotation1":"annotation1""annotation2":"annotation2"
} } ], "desc":"group DESC NEW1" } RENDER_RULES_TEMPLATE = """groups: - name: {{ rules.name }} rules: {%- for alert in rules.rules %} - alert: {{ alert.alert }} expr: {{ alert.expr}} for: {{ alert.duration }} labels: {%- for item in alert.labels %} {{ item }}: {{ alert.labels[item] }} {%- endfor %} annotations: {%- for item in alert.annotations %} {{ item }}: {{ alert.annotations[item] }} {%- endfor %} {% endfor %} """
result = jinja2.Template(source=RENDER_RULES_TEMPLATE).render(rules=rules) with open('result.yml','w') as fp: fp.write(result)

結果展示:

這裡寫圖片描述

MongoDB notes:

mongodb sort limit和skip用法

檢索資料可以使用sort()方法來對資料進行排序,指定排序欄位,並使用1或-1來指定排序方式是升序或降序。類似於SQL語句中的order by語句。

可以使用limit()方法來讀取指定數量的資料,還可以使用skip()方法來跳過指定數量的資料。對分頁效能上面效率非常高。

  1. 語法

db.COLLECTION_NAME.find().sort({KEY:1})

db.COLLECTION_NAME.find().limit(NUMBER)

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

示例:

db.col.find({},{“title”:1,_id:0}).limit(2)

第一個 {} 放 where 條件,為空表示返回集合中所有文件。
第二個 {} 指定那些列顯示和不顯示 (0表示不顯示 1表示顯示)。

想要讀取從 10 條記錄後 100 條記錄,相當於 sql 中limit (10,100)。

db.COLLECTION_NAME.find().skip(10).limit(100)