我一直在尝试建立我的第一个瓶子服务器。我已经启动了 virtualenv,使用 pip 安装了 Bottle 和 mongoengine。问题是,即使这样,当我运行 BottleApp.py 启动服务器时,我也会收到以下错误
没有名为 mongoengine 的模块
在我所做的行中
from mongoengine import *
Run Code Online (Sandbox Code Playgroud)
我还发现我的 $PYTHONPATH 尚未在 virtualenv 中设置。我应该手动设置 $PYTHONPATH 和 $PATH 来解决我的问题吗?
我在 ArchLinux 上运行,当前版本的 arch 现在默认安装 python 3.x 我已经安装了 python2 和 python2-pip 并使用 pip2 安装了 Bottle 和 mongoengine。是否有任何依赖性问题或冲突导致此错误?
我对两者感到困惑。需要帮忙。
嗨,我正在使用 mongo 引擎使用 mongodb 启动 django 1.8.3 来创建 rest api。
我正在使用 rest_framework_mongoengine 来这样做。
我想使用 DjangoFilterBackend 的一个功能。
我的代码是:
模型.py:
from mongoengine import *
from django.conf import settings
connect(settings.DBNAME)
class Client(Document):
name = StringField(max_length=50)
city = StringField(max_length=50)
country = StringField(max_length=200, verbose_name="Country")
address = StringField(default='')
Run Code Online (Sandbox Code Playgroud)
序列化器.py
from client.models import Client
from rest_framework_mongoengine.serializers import DocumentSerializer
class ClientSerializer(DocumentSerializer):
class Meta:
model = Client
depth = 1
Run Code Online (Sandbox Code Playgroud)
视图.py
from rest_framework_mongoengine.generics import *
from rest_framework import filters
class ClientList(ListCreateAPIView):
serializer_class = ClientSerializer
queryset = Client.objects.all()
filter_backends = …Run Code Online (Sandbox Code Playgroud) 我正在使用复制和分片构建 mongodb-cluster。我设置了基于 x509 的身份验证。我通过 mongo 连接到数据库(mongos):
mongo admin --ssl --sslCAFile mongoCA.pem \
--sslPEMKeyFile client.pem -u user -p password --host my.host.com --port 27017
Run Code Online (Sandbox Code Playgroud)
如何使用 mongoengine 连接到集群?
我没有找到方法register_connection的连接选项的描述:
def register_connection (alias, name = None, host = None, port = None,
read_preference = READ_PREFERENCE,
username = None, password = None, authentication_source = None,
** Kwargs):
Run Code Online (Sandbox Code Playgroud)
例如 PyMongo 提供了必要的选项http://api.mongodb.com/python/current/examples/authentication.html#mongodb-x509但我需要在现有代码中使用 mongoengine 。
items = collection.aggregate([
{"$match": {}},
{"$project": {
'temp_score': {
"$add": ["$total_score", 100],
},
'temp_votes': {
"$add": ["$total_votes", 20],
},
'weight': {
"$divide": ["$temp_score", "$temp_votes"]
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
total_score 和 total_votes 已经存储在文档中,
我可以按预期获得 temp_score 和 temp_votes,但无法获得体重,有什么建议吗?
mongodb pymongo mongoengine mongodb-query aggregation-framework
假设我有BaseClass其中包含一些逻辑,其中和main_function()都是通用的。假设这两个类有其独特的实现,前者以同步方式实现,而后者以异步方式实现。我写了这样的东西,它似乎有效:SyncClassAsyncClassget_data()
class BaseClass:
def get_data():
pass
@gen.coroutine
def main_function():
# some logic
try:
data = yield self.get_data()
except:
data = self.get_data()
# some more logic
class SyncClass(BaseClass):
def get_data():
//makes sync call to Mongo and gets data (using Mongoengine)
class AsyncClass(BaseClass):
@gen.coroutine
def get_data():
//makes async call to Mongo and gets data (using Motorengine)
Run Code Online (Sandbox Code Playgroud)
我使用此代码作为解决方法,因为我已经以这种方式实现了 get_data() 的这些方法。有一些更优雅的解决方案吗?我的代码有两部分与我有关:
try:
data = yield self.get_data()
except:
data = self.get_data()
Run Code Online (Sandbox Code Playgroud)
我不想在这里使用 try/ except 。
另一件事是:我@gen.coroutine在 …
我在使用 mongoengine (python3) 创建新文档时遇到问题。似乎不可能直接将列表添加到 ListFields。
我有以下设置:
# CONNECTION AND SETUP:
from mongoengine import *
connect('mongoengine_testing', host='localhost', port=27017)
class Chart(Document):
instrument_ticker = StringField(max_length=40)
chart_type = StringField(max_length=120)
chart_name = StringField(max_length=120)
x = ListField(StringField)
y = ListField(StringField)
Run Code Online (Sandbox Code Playgroud)
当我尝试添加这样的新图表文档时,它失败了:
## THIS DOESN'T WORK:
chart = Chart(
instrument_ticker = 'EURUSD',
chart_type = 'weekday_avg',
chart_name = 'Average Weekday',
x = ['1', '2', '3', '4', '5'],
y = ['13', '12', '24', '55', '32']
)
### ERROR MESSAGE
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-22-17d67eea1df7> in <module>() …Run Code Online (Sandbox Code Playgroud) 我正在使用Flask-RESTful在 Python 中编写一个简单的 REST API ,他们的文档说他们计划弃用对象序列化 (reqparse),转而使用像Marshmallow这样的序列化程序 我的 API 正在使用Flask MongoEngine 从 MongoDB 文档存储中读取和写入。
我非常感谢一个用例的示例,在该用例中,我选择使用外部序列化器(例如 Marshmallow),而不是 Document 对象上的 MongoEngine 内置序列化器。
我一直对这个错误感到困惑。我正在使用 mongoengine 创建一个车辆数据库,如下所示。
class Vehicles(Document):
make: StringField()
model: StringField()
license: StringField()
year: IntField()
mileage: IntField()
deleted: BooleanField()
for j in range(2):
vehicle = Vehicles(
make="Honda",
model="Civic",
license="H54 " + str(i) + str(j),
year=2015,
mileage= 500 + (i * 500),
deleted=False
).save()
Run Code Online (Sandbox Code Playgroud)
当我尝试运行代码时,我得到了:
mongoengine.errors.FieldDoesNotExist:文档“Vehicles”中不存在字段“{'license', 'year', 'model', 'mileage', 'make', 'deleted'}”
我不明白为什么它会给我这个错误。我知道解决方案是更改Document为DynamicDocument,但我真的不明白为什么。有人可以向我解释这个错误吗???
我已经阅读了有关切换集合以保存文档的mongoengine文档.并测试此代码并成功运行:
from mongoengine.context_managers import switch_db
class Group(Document):
name = StringField()
Group(name="test").save() # Saves in the default db
with switch_collection(Group, 'group2000') as Group:
Group(name="hello Group 2000 collection!").save() # Saves in group2000 collection
Run Code Online (Sandbox Code Playgroud)
但问题是当我想在交换机集合switch_collection中找到保存的文件时根本不起作用.
with switch_collection(Group, 'group2000') as GroupT:
GroupT.objects.get(name="hello Group 2000 collection!") # Finds in group2000 collection
Run Code Online (Sandbox Code Playgroud) 码:
class Users(db.Document, UserMixin):
first_name = db.StringField()
last_name = db.StringField()
username = db.StringField(unique=True)
password = db.StringField()
email = db.StringField()
following = db.ListField(db.StringField(), default=[])
role = db.ListField(db.StringField(), default=["user"])
confirmed = db.BooleanField(default=False)
confirmed_on = db.DateTimeField()
Run Code Online (Sandbox Code Playgroud)
所以如果我想从Users.following字段中删除某个字符串
Users.objects(username="some_user").update(pull__following=["some_string"])
然后保存吗?
因为我已经尝试过了,但它不会从 following listField
mongoengine ×10
mongodb ×7
python ×5
flask ×2
python-2.7 ×2
archlinux ×1
asynchronous ×1
django ×1
linux ×1
marshmallow ×1
motorengine ×1
pymongo ×1
python-2.x ×1
python-3.x ×1
tornado ×1
virtualenv ×1
x509 ×1