gpt4 book ai didi

python - 如何在Flask中访问MongoDB实例

转载 作者:行者123 更新时间:2023-12-01 07:26:11 25 4
gpt4 key购买 nike

我有一个非常简单的 Flask RESTful 应用程序,想要分割我的逻辑,以便它可以维护。我无法弄清楚如何在不出现循环导入问题的情况下从另一个文件访问我的 mongoDB 连接。我确信一定有一种方法可以拥有一个可以创建和/或返回实例的数据库文件,但我还无法破解它。

仅供引用。我已经从实际代码中删除了一些位,因此该示例可能不会实际运行,但希望提供我的基本设置的示例。

结构

app.py
api
__init__.py
foo.py

应用程序.py

from flask import Flask, request, abort, json, Response
from flask_restful import Resource, Api
from flask_pymongo import PyMongo

from api.foo import Foo


app = Flask(__name__)
api = Api(app)

app.config['MONGO_DBNAME'] = 'mydb'
app.config['MONGO_URI'] = 'mongodb://localhost:27017/mydb'

mongo = PyMongo(app)

# Routes
api.add_resource(Foo, '/foo', '/foo/<id>')

if __name__ == '__main__':
app.run(debug=True)

api/foo.py

import json

from flask import request, Response, g
from flask_restful import Resource

from app import mongo # Circular import fails

class Foo(Resource):
def get(self, id):
doc = mongo.db.users.find({...})
return {'get': 'Sample data'}

最佳答案

应用程序.py

from flask import Flask
from flask_restful import Api
from flask_pymongo import PyMongo


app = Flask(__name__)
api = Api(app)

app.config['MONGO_DBNAME'] = 'mydb'
app.config['MONGO_URI'] = 'mongodb://localhost:27017/mydb'

mongo = PyMongo(app)

# Routes
from foo import Foo # noqa
api.add_resource(Foo, '/foo', '/foo/<id>')

if __name__ == '__main__':
app.run(debug=True)

foo.py

from flask_restful import Resource


class Foo(Resource):
def get(self, id):
print(mongo)
return {'get': 'Sample data'}


from app import mongo # noqa

在我的最小代码示例中,我在文件末尾导入了依赖项。这样就可以避免循环依赖。我希望这对您有用。

关于python - 如何在Flask中访问MongoDB实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437541/

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