标签: mongoengine

Python找不到mongoengine模块

我一直在尝试建立我的第一个瓶子服务器。我已经启动了 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。是否有任何依赖性问题或冲突导致此错误?

我对两者感到困惑。需要帮忙。

linux python-2.x virtualenv archlinux mongoengine

3
推荐指数
1
解决办法
9194
查看次数

如何在 mongoengine 中使用 django rest 过滤

嗨,我正在使用 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)

django mongodb mongoengine python-2.7 django-rest-framework

3
推荐指数
1
解决办法
3312
查看次数

如何使用 mongoengine 连接到 mongodb-cluster

我正在使用复制和分片构建 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 。

python database-connection mongodb x509 mongoengine

3
推荐指数
1
解决办法
3297
查看次数

Mongodb 按复杂的计算值对文档进行排序

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

3
推荐指数
1
解决办法
581
查看次数

Python 中的抽象方法异步和同步实现

假设我有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在 …

python asynchronous tornado mongoengine motorengine

3
推荐指数
1
解决办法
1946
查看次数

为什么我不能直接分配 ListField 的值?

我在使用 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)

mongodb mongoengine python-3.x

3
推荐指数
1
解决办法
806
查看次数

我什么时候会使用像 marshmallow 这样的外部序列化器而不是 monogoengine 的内置 JSON 序列化(from_json 和 to_json)?

我正在使用Flask-RESTful在 Python 中编写一个简单的 REST API ,他们的文档说他们计划弃用对象序列化 (reqparse),转而使用像Marshmallow这样的序列化程序 我的 API 正在使用Flask MongoEngine 从 MongoDB 文档存储中读取和写入。

我非常感谢一个用例的示例,在该用例中,我选择使用外部序列化器(例如 Marshmallow),而不是 Document 对象上的 MongoEngine 内置序列化器。

python mongoengine flask flask-restful marshmallow

3
推荐指数
1
解决办法
4214
查看次数

Mongoengine:mongoengine.errors.FieldDoesNotExist

我一直对这个错误感到困惑。我正在使用 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'}”

我不明白为什么它会给我这个错误。我知道解决方案是更改DocumentDynamicDocument,但我真的不明白为什么。有人可以向我解释这个错误吗???

python mongodb mongoengine

3
推荐指数
1
解决办法
3744
查看次数

在mongoengine中切换集合以查找查询

我已经阅读了有关切换集合以保存文档的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)

python mongodb mongoengine python-2.7

2
推荐指数
1
解决办法
1295
查看次数

MongoEngine从ListField删除字符串

码:

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

mongodb mongoengine flask flask-mongoengine

2
推荐指数
1
解决办法
1557
查看次数