SqlAlchemy更新不与Sqlite一起使用

编程入门 行业动态 更新时间:2024-10-27 05:34:06
本文介绍了SqlAlchemy更新不与Sqlite一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我遵循这个问题中的(两个)例子:SQLAlchemy:一个更好的方式来更新声明?

我发现在Ubuntu Linux上使用sqlite和flask-sqlalchemy时,模型更新不会发生。最简单的例子不适用于我:

类任务: id = db.Column(db。 Integer,primary_key = True) name = db.Column(db.String(32),unique = True) desc = db.Column(db.String(255),unique = False) state = db.Column(db.Boolean) #... @ app.route(/ task /< int:id> / update ,方法= [POST]) def toggle_state(id): db.session.query(Task).get(id).update({state:True}) log.info(state is now:+ str(Task.query.get(id).state))#printsstate is now:False

解决方案

所以我尝试了几个不同的东西。这是什么不工作,什么最终没有工作:

没有工作: pre > #这将抛出一个异常,AttributeError:任务'对象没有任何属性'更新' db.session.query(Task).get(id).update({状态:状态}) db.sessionmit() #这是链接的SO线程中的示例:#不做任何事 db.session .query(Task).filter_by(id = id).update({state:state}) #this也没有做任何事 task = Task.query.filter_by(id = id) task.state = state db.sessionmit() #不是 task = Task.query.get(id) task.state = state db.sessionmit()

#ok这样做: db.session.query(Task).filter_by(id = id).update ({state:state}) db.sessionmit() #也是这样的: task = db.session.query(Task).get id) task.state =状态 db.sessionmit()

I followed the (two) examples in this question: SQLAlchemy: a better way for update with declarative?

And I'm finding that a model update does not happen when using sqlite with flask-sqlalchemy on Ubuntu Linux. The very simplest example doesn't work for me:

class Task: id= db.Column(db.Integer, primary_key=True) name= db.Column(db.String(32), unique=True) desc= db.Column(db.String(255), unique=False) state= db.Column(db.Boolean) # ... @app.route("/task/<int:id>/update",methods=["POST"]) def toggle_state(id): db.session.query(Task).get(id).update({"state":True}) log.info("state is now: " + str(Task.query.get(id).state)) # prints "state is now: False"

First time using flask/sqlalchemy, so I assume I'm missing something obvious.

解决方案

So I tried several different things. Here's what didn't work, and what finally did work:

Didn't work:

# this will throw an exception, "AttributeError: 'Task' object has no attribute 'update'" db.session.query(Task).get(id).update({"state":state}) db.sessionmit() # this was the example in the linked SO thread: # does nothing db.session.query(Task).filter_by(id=id).update({"state":state}) #this also does nothing task = Task.query.filter_by(id=id) task.state = state db.sessionmit() #not this either task = Task.query.get(id) task.state = state db.sessionmit()

Did work:

#ok this works: db.session.query(Task).filter_by(id=id).update({"state":state}) db.sessionmit() #and also this: task = db.session.query(Task).get(id) task.state = state db.sessionmit()

更多推荐

SqlAlchemy更新不与Sqlite一起使用

本文发布于:2023-11-17 03:47:03,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不与   SqlAlchemy   Sqlite

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!