我收到以下错误:
db断言失败,断言:'未授权db:db1锁类型:-1 client:',assertionCode:10057
我可以通过在我的服务器的shell上运行python来访问MongoDB数据库.但是当我尝试访问我的网站时,我得到了这些未经授权的错误.
对此错误的任何修复?
我有一个网页,用户可以在地图上查看MongoDB中的数据.我想要几个复选框,单选按钮等来过滤地图上看到的内容.如果我使用MySQL,我会这样做
query = "SELECT * FROM table WHERE x = 1"
if checkbox == "checked":
query += "AND WHERE y = 2"
Run Code Online (Sandbox Code Playgroud)
我怎么能用pymongo复制它?
我习惯于在pymongo中这样做,作为访问特定数据库的一种方法:
import pymongo
connection = pymongo.MongoClient()
db = connection.DBNAME
Run Code Online (Sandbox Code Playgroud)
然后,我现在想要能够连接到通过变量命名的数据库,并着眼于循环一系列数据库.所以类似于:
dbname = 'DBNAME'
connection = pymongo.MongoClient()
db = eval('connection.' + dbname)
Run Code Online (Sandbox Code Playgroud)
我被告知eval()偶尔会成为魔鬼,应该避免.如何使用setattr()或其他解决方案执行此操作?就像是...
dbname = 'DBNAME'
connection = pymongo.MongoClient()
db = setattr(connection, '??name??', dbname)
Run Code Online (Sandbox Code Playgroud) 我想创建一个mongodb来存储作业结果,我创建了homework一个存储每个主题的结果数组的字典.
import pymongo
DBCONN = pymongo.Connection("127.0.0.1", 27017)
TASKSINFO = DBCONN.tasksinfo
_name = "john"
taskid = TASKSINFO.tasksinfo.insert(
{"name": _name,
"homework": {"bio": [], "math": []}
})
TASKSINFO.tasksinfo.update({"_id": taskid},
{"$push": {"homework.bio", 92}})
Run Code Online (Sandbox Code Playgroud)
当我试图将一些信息推送到db时,出现错误:
Traceback (most recent call last):
File "mongo_push_demo.py", line 13, in <module>
{"$push": {"homework.bio", 92}})
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/pymongo/collection.py", line 479, in update
check_keys, self.__uuid_subtype), safe)
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/pymongo/message.py", line 110, in update
encoded = bson.BSON.encode(doc, check_keys, uuid_subtype)
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/bson/__init__.py", line 567, in encode
return cls(_dict_to_bson(document, check_keys, uuid_subtype))
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5-py2.7-linux-i686.egg/bson/__init__.py", line 476, …Run Code Online (Sandbox Code Playgroud) 我将如何使用 pymongo 仅返回 BSON ObjectId 的字符串组件。我可以通过从 bson.objectid 导入 ObjectId 将字符串编码为对象 ID;但我无法做相反的事情。
当我尝试:
for post in db.votes.find({'user_id':userQuery['_id']}):
posts += post['_id'].str
Run Code Online (Sandbox Code Playgroud)
我得到一个 ObjectId 没有属性 str 错误。
谢谢!
我正在寻找相当于这个SQL查询的mongo:
SELECT country
FROM geoip
WHERE
2921648058 BETWEEN start AND end
Run Code Online (Sandbox Code Playgroud)
我的MongoDB文档如下所示:
{
"_id" : ObjectId("52daefed0c78fc8c9085498d"),
"country" : "DE",
"end" : "16777471",
"start" : "16777216"
}
Run Code Online (Sandbox Code Playgroud)
这些数字是转换为int格式的IP地址.不幸的是,关于这一点的所有搜索只出现了$ gt和$ lt运算符,在这种情况下没有多大用处,因为我不想检索范围内某个字段的文档,但文档中的范围很大如果文档本身符合搜索中给定的数字.
由于数据库的庞大规模,浏览所有记录并在脚本中评估结果不是一种选择.
我正在尝试安装这个软件,一些用于在本地mongodb数据库中搜索的脚本:https: //github.com/wimremes/cve-search/blob/master/README.md
由于search.py脚本失败了,我试图按照建议添加一些索引:
db.cpe.ensureIndex( {id:1 } )
db.cves.ensureIndex( {id:1} )
db.cves.ensureIndex( {vulnerable_configuration:1} )
db.vfeed.ensureIndex( {id:1} )
Run Code Online (Sandbox Code Playgroud)
但是这段代码不起作用:ensureIndex失败并出现此错误:
File "build/bdist.linux-i686/egg/pymongo/collection.py", line 1672, in __call__
TypeError: 'Collection' object is not callable. If you meant to call the 'ensureIndex' method on a 'Collection' object it is failing because no such method exists.
Run Code Online (Sandbox Code Playgroud)
并ensure_index( {id:1})返回此:
TypeError: if no direction is specified, key_or_list must be an instance of list
Run Code Online (Sandbox Code Playgroud)
我怎么做才能获得新指数?
我对将数据从数据库(mongodb)传递到html感到困惑。
我在“ init .py”中具有使用while逻辑查询数据库的python代码-参见以下代码段:
from pymongo import MongoClient
from flask import Flask, render_template
@app.route("/snapshot")
def pymongo_query():
db=client.collection
months=[1,2,3,4,5,6,7,8,9,10,11,12]
while months:
mon=months.pop()
query=list(db.collection.find({args}))
query=query[0]
month=query['month']
item_1=query['item_1']
item_2=query['item_2']
Run Code Online (Sandbox Code Playgroud)
该代码的作用是它遍历每个月,每个月由列表中的数字表示,并查询数据库中的各个月。我用while循环走了几个月。在Python中,我将在循环结束时使用print输出结果。
如何使用jinja2将数据输出到html中?我想知道我是否需要在jinja中使用while逻辑或将其保留在上面的init .py文件中。
在我的Flask应用程序中我导入了pymongo: from pymongo import MongoClient
然后我调用我的connect_db方法:
db = get_db(connect_db())
Run Code Online (Sandbox Code Playgroud)
编码方法如下:
def connect_db():
client = MongoClient("localhost", 27017)
return client
def get_db(client):
return client(DATABASE)
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误 TypeError: 'MongoClient' object is not callable
我在https://api.mongodb.org/python/current/tutorial.html上找到它
什么原因?
我成功安装了pymongo使用 pip3
Aleeshas-MacBook-Air:project 2 aleesha$ sudo pip3 install pymongo
The directory '/Users/aleesha/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/aleesha/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip …Run Code Online (Sandbox Code Playgroud)