gpt4 book ai didi

python - Flask/PyMongo - 在应用程序顶部初始化 pymongo

转载 作者:行者123 更新时间:2023-12-01 04:54:48 26 4
gpt4 key购买 nike

我正在尝试扩展我的第一个 Flask 应用程序,但不了解在多个模块中使用 pymongo 数据库所需的结构。例如,这是我的新结构:

run.py
app/
├── __init__.py
├── forms.py
├── static/
├── templates/
└── views/
├── __init__.py
├── bookmarklet.py
├── main.py
└── user.py

在尝试扩展此功能之前,我将其放在单个 views.py 文件的顶部:

from flask.ext.pymongo import PyMongo
mongo = PyMongo(app)
with app.app_context():
mongo.db.user.ensure_index("email", unique=True)

目标是能够在所有 View 模块以及 forms.py 模块中使用此 mongo 实例。我尝试过以下两件事:

  1. 将上述代码段放入 app/__init__.py 文件中,但似乎无法使其可供任何其他模块访问。我尝试这样做: app.db = mongo.db (但下游不可用)
  2. 将上面的代码片段放入每个需要它的模块中,但随后我收到错误,有多个 mongo 实例具有相同的前缀。

这个初始化应该放在哪里才能使其在应用程序中的任何地方都可以访问?

编辑

听起来我做得对,但还有其他事情发生。我正在发布更完整的代码和错误。

应用程序/__init__.py

from flask import Flask

app = Flask(__name__)
from app.views import main

app.config.update(
DEBUG = True,
SECRET_KEY = "not telling",
WTF_CSRF_ENABLED = False,
)

app.jinja_env.add_extension('pyjade.ext.jinja.PyJadeExtension')

from flask.ext.pymongo import PyMongo
mongo = PyMongo(app)
with app.app_context():
mongo.db.user.ensure_index("email", unique=True)

应用程序/ View /main.py

from app import app
from flask import render_template, redirect, request, flash, url_for
from flask.ext.jsonpify import jsonify
from app.forms import *

from app import *
print mongo

错误:

(venv)imac: me$ ./run.py 
Traceback (most recent call last):
File "./run.py", line 4, in <module>
from app import app
File "/Users/me/Dropbox/development/test/app/__init__.py", line 4, in <module>
from app.views import main
File "/Users/me/Dropbox/development/test/app/views/main.py", line 9, in <module>
print mongo
NameError: name 'mongo' is not defined

最佳答案

将该代码段放入 app/__init__.py 中。例如,如果您想在 forms.py 中访问它,请尝试:

...
from app import *
# then you can use mongo here
print mongo
...

例如,如果您想在 user.py 中访问它,请尝试上面相同的代码。

检查这是否适合您。如果没有,请显示错误消息,我会考虑解决方案二。

关于python - Flask/PyMongo - 在应用程序顶部初始化 pymongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com