首页 > 解决方案 > 当我自己的列更改时更新我推荐的 SQLAlchemy 列

问题描述

每当我的 wallet_1 被 +1 或任何值修改时,如果我的 wallet_2 被修改为 + 1 或任何值,我想获取该值并将其添加到我的推荐钱包的 wallet_3 中,即 (Joshua wallet_3)。

def User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String)
    my_referral = db.Column(db.String) #referral = Joshua

def Wallet(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    wallet_1 = db.Column(db.Float, default=0.0)
    wallet_2 = db.Column(db.Float, default=0.0)
    wallet_3 = db.Column(db.Float, default=0.0)

标签: pythonflasksqlalchemy

解决方案


首先,你为什么不使用类来构建数据库模型?

根据我在 sqlalchemy docs上找到的内容,尝试这种方法。

If you want to even update wallet3 based on what's happening in wallet2- 您可以随时设置一些功能,例如 update_wallet。例如。update_wallet2 等...它们将相互引用。我无权访问您的应用程序和整个环境,从我的角度来看,这是我能提供的最大帮助。停止推测,过度思考它,然后尝试设置这些功能,然后测试和调试直到成功。

def update_wallet(context):
    return context.get_current_parameters()['wallet_1']

# every function gonna follow the same pattern
def update_wallet3(context):
    return context.get_current_parameters()['wallet_2']


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String)
    referral = db.Column(db.String)
    

class Wallet(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    wallet_1 = db.Column(db.Float, default=0.0)
    wallet_2 = db.Column(db.Float, default=0.0, onupdate=update_wallet)
    wallet_3 = db.Column(db.Float, default=0.0, onupdate=update_wallet3)

因此,当 wallet_1 列上出现 INSERT 或 UPDATE 语句时,将触发 update_wallet 函数它正在检索给定的值,并为 wallet_2 插入/更新它。

就像我之前提到的,仔细尝试通读 sqlalchemy 文档。祝你好运。


推荐阅读