Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否使用SqlAlchemy Flask从数据库中删除一行?_Python_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 是否使用SqlAlchemy Flask从数据库中删除一行?

Python 是否使用SqlAlchemy Flask从数据库中删除一行?,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我试图从我的订阅者列表中删除一个用户,但整个订阅者将自动删除 这是我的订阅功能: def subscribe(self, user_id): if not self.is_subscriber(user_id): db.engine.execute( subscribers.insert(), client_id = self.id, user_id = user_id )

我试图从我的订阅者列表中删除一个用户,但整个订阅者将自动删除

这是我的订阅功能:

def subscribe(self, user_id):
    if not self.is_subscriber(user_id):
        db.engine.execute(
            subscribers.insert(),
            client_id = self.id,
            user_id = user_id
        )
        db.session.commit()
    else:
        return False
def unsubscribe(self, user_id):
    if self.is_subscriber(user_id):
        db.engine.execute(
            subscribers.delete(),
            client_id = self.id,
            user_id = user_id
        )
        db.session.commit()
    else:
        return False
取消订阅功能:

def subscribe(self, user_id):
    if not self.is_subscriber(user_id):
        db.engine.execute(
            subscribers.insert(),
            client_id = self.id,
            user_id = user_id
        )
        db.session.commit()
    else:
        return False
def unsubscribe(self, user_id):
    if self.is_subscriber(user_id):
        db.engine.execute(
            subscribers.delete(),
            client_id = self.id,
            user_id = user_id
        )
        db.session.commit()
    else:
        return False
如果我试图取消订阅,它应该会删除该特定用户,但在我的情况下,所有用户都会从表中删除,为什么,请,任何人都可以帮助解决这个问题

编辑: 如果我试图从查询中删除客户端\u id,而只是删除用户\u id,则会出现以下错误:

unappedInstanceError:未映射类'\uu内置'\uu.int'

还可以使用db.session.delete(用户id)命令

我还创建了这个函数,得到了同样的错误:

def unsubscriber(self, user_id):
    select_subscribers = subscribers.select(
            db.and_(
                subscribers.c.user_id == user_id,
                subscribers.c.client_id == self.id
            )
    )
    rs = db.engine.execute(select_subscribers)
    return False if rs.rowcount == 0 else db.session.delete(user_id),
    db.session.commit()
如果您正在使用sqlalchemy,您可以简化很多操作,以利用sqlalchemy的强大功能。FWIW您不应该像这样直接访问引擎,除非您有更高级的用例

例如,您已将数据模型映射如下:

class Subscriber(db.Model):
    user_id = db.Column(db.Integer, primary_key=true)
    client_id = ....
    ....

    # method to add new subscriber
    def __init__(self, user_id, client_id)
        self.user_id = user_id
        self.client_id = client_id

@app.route('/subscribe/')
def subscribe():
    # add a subscriber with user id 21, client 543
    new = Subscriber(21, 543)
    db.session.add(new)
    db.session.commit()

@app.route('/unsubscribe/')
def unsubscribe():
    # remove subscriber
    Subscriber.query.filter_by(user_id=21, client_id=543).delete()
    db.session.commit()
如果您正在使用sqlalchemy,您可以简化很多操作,以利用sqlalchemy的强大功能。FWIW您不应该像这样直接访问引擎,除非您有更高级的用例

例如,您已将数据模型映射如下:

class Subscriber(db.Model):
    user_id = db.Column(db.Integer, primary_key=true)
    client_id = ....
    ....

    # method to add new subscriber
    def __init__(self, user_id, client_id)
        self.user_id = user_id
        self.client_id = client_id

@app.route('/subscribe/')
def subscribe():
    # add a subscriber with user id 21, client 543
    new = Subscriber(21, 543)
    db.session.add(new)
    db.session.commit()

@app.route('/unsubscribe/')
def unsubscribe():
    # remove subscriber
    Subscriber.query.filter_by(user_id=21, client_id=543).delete()
    db.session.commit()

哦,是的,这很有效,如果你在应用程序中使用多个数据库,引擎似乎更有效,谢谢:)。我在我的模型定义中使用
\uuuu bind\u key\uuuu
来管理多个数据库,如下所示:哦,是的,这很有效,如果你在应用程序中使用多个数据库,引擎似乎更有效,谢谢:)。我在模型定义中使用
\uu绑定\u键
来管理多个数据库,如下所示: