首页 > 解决方案 > 在 SqlAlchemy 模型中存储字典

问题描述

我有一个名为 user 的 sqlalchemy 模型:

class User (db.Model):
    id = id = db.Column(db.Integer, primary_key=True)
    name =  db.Column(db.String(50), nullable = False)

    def __init__ (self, name):
        self.name = name

我想在这个模型(类)中有一个字典属性。
我能做这样的事情吗:

class User (db.Model):
    id = id = db.Column(db.Integer, primary_key=True)
    name =  db.Column(db.String(50), nullable = False)
    messages = {}    # a dictionary which maps each category to a list of msgs

    def __init__ (self, name):
        self.name = name

    def append_msg (msg, category):
        self.messages[category].append (msg)

实现这种结构的最佳方法是什么?这本字典是永久的还是在内存中是临时的?

标签: pythonflasksqlalchemyflask-sqlalchemy

解决方案


sqlalchemy 有 JSON。

from sqlalchemy import JSON
class User (db.Model):
    id = id = db.Column(db.Integer, primary_key=True)
    name =  db.Column(db.String(50), nullable = False)
    messages = db.Column(JSON) #or may be db.Column(db.JSON)

它会在您的数据库中。


推荐阅读