pymongo readWriteMongodb_server.py

"""
此模块假定读写本地同一个数据库plot。
测试URL:
http://localhost:8080/
读取plot数据库的traffic集合的所有文档,并构造成json字符串返回。
http://localhost:8080/read/traffic
清空traffic集合,并重新写入一条文档,post方式。
http://localhost:8080/write/traffic
"""
from pymongo import MongoClient
# from pprint import pprint
import json
import web

# 以下两行代码,放到if __name__ == "__main__":下会报错。
# 不知原因。
client = MongoClient()
# 确定数据库plot。
db = client.plot

urls = (
    r'/', 'Index',
    r'/read/(\w+)', 'ReadPlotTraffic',
    r'/write/(\w+)', 'WritePlotTraffic'
)


class Index:
    def GET(self):
        return "Hello, world!"


class ReadPlotTraffic:
    def GET(self, collectionName):
        web.header("Access-Control-Allow-Origin", "*")
        web.header('content-type', 'text/json; charset=utf-8')
        # doc = db[collectionName].find_one({}, {"_id": 0})
        doc = db[collectionName].find({}, {"_id": 0})
        features = []
        for feature in doc:
            features.append(feature)
        return json.dumps({"type": "FeatureCollection", "features": features})


class WritePlotTraffic:
    def POST(self, collectionName):
        web.header("Access-Control-Allow-Origin", "*")
        # 删除collectionName集合。
        db[collectionName].drop()
        # 获取前端post方式提交的数据。
        i = web.input()
        dataDict = json.loads(i.data)
        # 插入多条数据。
        db[collectionName].insert_many(dataDict["features"])
        return "done!"


if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值