pymongo报错处理

1,flask 启动问题、数据库解决
WARNING: This is a development server. Do not use it in a production deployment. falsk
WSGI server instead
其实就是 flask 未使用 WSGI 启动,所以使用 wsgi 启动就行了,我找到两种方式,但不知道怎么比较好
坏,但以我的理解,底层都是 wsgi ,只是封装库不同而已。。。
希望大神指点一下
方法一:
from gevent import pywsgi
if __name__ == '__main__':
    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
    server.serve_forever()
方法二:
from wsgiref.simple_server import make_server
if __name__ == '__main__':
    server = make_server('', 64570, app)
    server.serve_forever()
代码放到 app.py 文件中
2,Python3 pymongo 使用 count 报警告解决办法
AttributeError ‘Cursor’ object has no attribute ‘count’
在统计查询结果包含多少条数据的时候,一开始使用的是 find().count() 进行统计,代码如下:
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
count = collection.find().count()
print(count)
运行结果如下:
在网上查找资料发现, count 方法已经被新版本淘汰了,我们可以使用新的统计方法
estimated_document_count()
db_count = cursor.count_documents({'dt': handle_date})
如果是带条件的查询统计就需要使用 count_documents
db_count = cursor.count_documents({'dt': handle_date})
后面我将 count() 修改为 estimated_document_count() ,运行之后,发现还是报错
后来找到了原因,发现把 find() 方法去掉就可以了
import pymongo
client = pymongo.MongoClient(host='localhost', port=27017)
db = client.test
collection = db.students
count = collection.estimated_document_count()
print(count)
这样问题就解决了
3,报错处理
NotImplementedError: Database objects do not implement truth value testing or bool(). Please compare with None instead: database is not None

config.py文件中if not db:改为if not db is None

import time,pymongo

ip = '127.0.0.1'
port = 27017
database = 'database47'

client = pymongo.MongoClient(ip,port)
# db = None
db = client.database46

# 获取数据库
def get_db():
  global db
  # 原来是if not db
  # if not db:
  if not db is None:  #  -----here
    db = client[database]
  return db

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值