Python中Flask与MongoDB的Models如何编写?

RT,大佬们,flask 操作 mongo 的 model 咋写,求个 demo 看看。
不用 orm 也没啥问题的吧
Python中Flask与MongoDB的Models如何编写?

5 回复

不用 orm 后期会不知不觉自己造一个 orm 出来


在Flask里用MongoDB,一般不用传统ORM那套models.py的写法。MongoDB是文档数据库,直接用它的Python驱动(比如pymongo)或者用Flask-PyMongo这样的扩展更直接。

给你个最常用的方案,用Flask-PyMongo

from flask import Flask
from flask_pymongo import PyMongo

app = Flask(__name__)
app.config['MONGO_URI'] = 'mongodb://localhost:27017/mydatabase'
mongo = PyMongo(app)

# 这就是你的"Model"操作了
class User:
    @staticmethod
    def create(name, email):
        return mongo.db.users.insert_one({'name': name, 'email': email})
    
    @staticmethod 
    def find_by_email(email):
        return mongo.db.users.find_one({'email': email})
    
    @staticmethod
    def update_email(user_id, new_email):
        return mongo.db.users.update_one(
            {'_id': user_id},
            {'$set': {'email': new_email}}
        )

# 使用示例
user_id = User.create('张三', 'zhangsan@example.com')
user = User.find_by_email('zhangsan@example.com')

如果你想要更像传统ORM的写法,可以考虑mongoengine

from flask import Flask
from mongoengine import Document, StringField, connect

app = Flask(__name__)
connect('mydatabase', host='localhost', port=27017)

class User(Document):
    name = StringField(required=True)
    email = StringField(required=True, unique=True)
    
    @classmethod
    def create_user(cls, name, email):
        user = cls(name=name, email=email)
        user.save()
        return user

# 使用
user = User.create_user('李四', 'lisi@example.com')
found = User.objects(email='lisi@example.com').first()

总结建议:直接用Flask-PyMongo操作更符合MongoDB的灵活特性。

看看 mongoengine

是可以不用 但是为什么不用呢 我发现不用 ORM 我完全不会写。。。哈哈哈哈

回到顶部