当我自己的列更改时更新我推荐的 SQLAlchemy 列

Update SQLAlchemy column of my referral when my own column changes

每当我的 wallet_1 被修改为 +1 或任何值时,我想获取该值并将其添加到我的推荐钱包的 wallet_2 中(Joshua wallet_2) 以及 wallet_2,如果我的 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)

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

根据我设法找到的内容 on 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 函数。它正在检索给定值,并且 inserting/updating 它用于 wallet_2.

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