2017-04-14 45 views
0

我試圖從我的用戶列表中刪除一個用戶,但是整個用戶自動刪除。用SqlAlchemy Flask從數據庫中刪除一行?

這裏是我的訂閱功能:

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 

通過,如果我想取消它應刪除特定的用戶,但在我的情況整個用戶被從表中刪除,爲什麼這樣,請問,有人可以幫助解決這裏的問題?

編輯:

如果我試圖從查詢中刪除CLIENT_ID,只是刪除USER_ID,我得到這個錯誤:

UnmappedInstanceError: Class '__builtin__.int' is not mapped

db.session。刪除(user_id)命令!! 。如果您使用flask-sqlalchemy可以簡化很多這利用的SQLAlchemy的功率

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() 

回答

1

而且我已經創造了這個功能,它通過我也得到了同樣的錯誤。 FWIW你不應該像這樣直接訪問引擎,除非你有更高級的用例你應該use the session

E.g.你已經映射你的數據模型是這樣的:

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() 
+0

哦,是的,工作,引擎似乎更有效,如果你在你的應用程序中使用多個數據庫,謝謝:)。 – reznov11

+0

我使用模型定義中的__bind_key__來管理多個數據庫,如下所示:[**多個帶綁定**的數據庫](http://flask-sqlalchemy.pocoo.org/2.1/binds/#binds) – abigperson

相關問題