Hy大家,我正在实现一个Flask/MongoDB项目,因为我是这个世界的新手,我已经按照本页的教程:http: //docs.mongodb.org/ecosystem/tutorial/write-a-tumblelog -application与-烧瓶-mongoengine /
之后,我开始编写自己的应用程序代码,这是代码的一部分:
楷模:
class Generic(db.Document):
descrizione = db.StringField(max_length=255, required=True)
meta = {
'allow_inheritance': True,
'indexes': [
{'fields': ['descrizione'], 'unique': True}
]
}
class Category(Generic):
def __call__(self, *args):
pass
class User(db.Document):
email = db.EmailField(max_length=255, required=True)
nickname = db.StringField(max_length=255, required=True)
password = db.StringField(max_length=16, required=True)
categoria = db.ReferenceField('Category', required=True)
meta = {
'indexes': [
{'fields': ['nickname', 'email'], 'unique': True}
]
}
Run Code Online (Sandbox Code Playgroud)
如上所示,我有一个继承"Generic"类的"Category"类."User"类最后有一个ReferenceField属于Category.这样,当我创建用户时,mongo db上的category字段存储为ObjectID,与"generic"集合相关,该集合具有我创建的所有类别.
下一步是创建表单以将新文档插入到用户集合中.在我的Views python文件中我有这个cose:
def iscrizione():
form = model_form(User, only=['email', 'nickname', 'password', 'categoria'])(request.form)
if request.method == 'GET': …Run Code Online (Sandbox Code Playgroud) 首先,我是python和flask的新手。我四处搜寻并尝试了一些无济于事的事情。我有一个具有DateTimeField作为成员之一的模型,我们称它为“ created_at”。当我返回查询集为JSON时,我在字段中看到了这一点
...
"created_at": {
"$date": 1412938697488
}
...
Run Code Online (Sandbox Code Playgroud)
无论如何,是否有通过自定义JSON编码器等获取输出的方式,如下所示:
"created_at": "2014-10-10T07:33:04Z",
Run Code Online (Sandbox Code Playgroud)
任何指导或建议,将不胜感激。
谢谢!
我开始了这个Turial,在这里
并得到这个错误
**mongoengine.errors.NotRegistered:** `Comment` has not been registered in the document registry. Importing the document class automatically registers it, has it been imported?
Run Code Online (Sandbox Code Playgroud)
任何的想法。太感谢了。
就像在带有 sql 后端的 django 中一样,我们可以通过以下方式将查询集转换为平面列表
foovar.objects.all().values_list('id', flat=true)
Run Code Online (Sandbox Code Playgroud)
给出一个 id 列表
如何在 mongo 后端获取 id 列表,正在使用的 ORM 是 mongoengine,其中 values_list 函数没有平面参数。
我试图在指定的时间跨度内通过 mongoengine 从 mongodb 检索数据。下面是使用的数据库模型。
class DeviationReport(db.Document):
meta = {'collection': 'DeviationReport'}
created_at = db.DateTimeField()
date = db.DateTimeField()
author = db.StringField()
read_by = db.ListField(default=[])
prod_line = db.ReferenceField(ProductionLine)
product = db.ReferenceField(Product)
description = db.StringField()
Run Code Online (Sandbox Code Playgroud)
我试过的是下面的代码。但是它不会返回任何结果。当我需要根据用户输入构建动态查询时,我使用了类似的方法。
kwargs = {}
start = datetime.datetime(2018, 12, 11)
end = datetime.datetime(2019, 03, 13)
kwargs['created_at'] = { '$lt': end, '$gt': start }
DeviationReport.objects(**kwargs)
Run Code Online (Sandbox Code Playgroud)
我显然已经确定日期范围内有对象,并且我已经阅读了其他类似的帖子,其中下面的查询已成功使用。如何让我的查询返回 'start' 和 'end' 之间的所有内容,或者如何按照我的意愿重写它?
谢谢。
我正在使用flask-mongoengine 扩展,我有一个像这样的用户类:
class User(db.Document, UserMixin):
email = db.StringField(max_length=120, required=True, unique=True)
password_hash = db.StringField(max_length=80, required=True)
active = db.BooleanField()
fb_id = db.StringField(max_length=120, required=False)
def __init__(self, email, password, fb_id=None, active=True):
hashp = md5.md5(password).hexdigest()
self.email=email
self.password_hash=hashp
self.fb_id=fb_id
self.active=active
Run Code Online (Sandbox Code Playgroud)
但是当我做一个简单的获取时:
User.objects.get(email = email)
我收到错误:
TypeError: __init__() got an unexpected keyword argument 'password_hash'
但是我在我的 init 中设置了 password_hash。令人惊讶的是,如果我删除整个__init__并通过 args 传递所有内容,它工作正常。
所以我认为我在__init__. 我很坚持这一点,将不胜感激您的帮助。
我正在使用Flask构建一个网站,我将MongoDB与MongoEngine ORM一起使用.为了重新开始,我现在升级了我的ubuntu 14.04开发机器上的所有apt和pip包.不幸的是,这破坏了我与MongoDB的联系:
Traceback (most recent call last):
File "./run.py", line 4, in <module>
from app import app, socketio
File "/home/kr65/beta/app/__init__.py", line 21, in <module>
mongoDb = MongoEngine(app)
File "/usr/local/lib/python2.7/dist-packages/flask_mongoengine/__init__.py", line 33, in __init__
self.init_app(app)
File "/usr/local/lib/python2.7/dist-packages/flask_mongoengine/__init__.py", line 66, in init_app
self.connection = mongoengine.connect(**conn_settings)
File "/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py", line 164, in connect
return get_connection(alias)
File "/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py", line 126, in get_connection
raise ConnectionError("Cannot connect to database %s :\n%s" % (alias, e))
mongoengine.connection.ConnectionError: Cannot connect to database default :
False is not a …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
我正在使用带有进程 4 的 uwsgi 线程模式运行 Flask 并使用 pymongo 还使用 flask_mongoengine 并且 uwsgi 说“MongoClient 在 fork 之前打开。仅创建 MongoClient”我尝试使用 connect=False 进行连接,但结果是一样的
lazy-apps = true 问题已修复,但 uwsgi 似乎需要更多时间来加载可以执行哪些操作以获得最佳性能?
尝试flask-mongoengine使用 WSL2/Debian 在 Win10 计算机上安装时出错。我能够毫无问题地安装其他项目依赖项。
输入的命令是:python3 -m pip install flask-mongoengine,错误输出如下)
曾尝试使用 做类似的事情sudo,但没有改进。
Collecting flask-mongoengine
Using cached flask-mongoengine-0.9.5.tar.gz (111 kB)
ERROR: Command errored out with exit status 1:
command: /mnt/d/dev/opalapi/venv/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-wl69gb5c/flask-mongoengine/setup.py'"'"'; __file__='"'"'/tmp/pip-install-wl69gb5c/flask-mongoengine/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ldtngp0q
cwd: /tmp/pip-install-wl69gb5c/flask-mongoengine/
Complete output (44 lines):
WARNING: The wheel package is not available.
ERROR: Command errored out with exit status 1:
command: /mnt/d/dev/opalapi/venv/bin/python3 -u -c 'import sys, setuptools, …Run Code Online (Sandbox Code Playgroud)