当前位置: 首页 > 面试题库 >

SQLAlchemy:使用声明式更新的更好方法?

濮阳唯
2023-03-14
问题内容

我是SQLAlchemy新手。

假设我在声明模式下有一个用户表:

class User(Base):
    __tablename__ = 'user'
    id = Column(u'id', Integer(), primary_key=True)
    name = Column(u'name', String(50))

当我知道没有将对象加载到会话中的用户ID时,我会像这样更新该用户:

ex = update(User.__table__).where(User.id==123).values(name=u"Bob Marley")
Session.execute(ex)

我不喜欢使用User.__table__,我应该不再为此担心吗?

有一个更好的方法吗?

谢谢!


问题答案:

在ORM级别上也有一些更新功能。它还不能处理任何棘手的情况,但是对于单行更新(或批量更新)的普通情况,它可以正常工作。它甚至会遍历所有已加载的对象,并将更新应用于它们。您可以像这样使用它:

session.query(User).filter_by(id=123).update({"name": u"Bob Marley"})


 类似资料:
  • 我以前从未使用过JPQL,我需要用它来批量更新特定列中的值。该列存在于表中,但实体类是在没有变量的情况下设置的。我不能使用确切的数据,但设置会像这样给你一个想法: 数据库列 JPA 实体类 在 Books 实体类中,有一个 getter 和 这两个问题都是b.作者提出的。authorId和b.author是无效的标识符。是否可以编写两个单独的查询?1个查询作为select语句,我可以使用连接,然后

  • 问题内容: 我正在尝试使此Python MYSQL更新语句正确(带有变量): 有什么想法我要去哪里吗? 问题答案: 它应该是: 您 也 可以通过基本的字符串操作来做到这一点, 但 不建议使用此方法,因为它使您可以进行SQL注入 。因为以 正确的方式完成 tm是如此容易(和类似)。正确地做。 您唯一需要注意的是,某些数据库后端没有遵循相同的字符串替换约定(想到了SQLite)。

  • 这是一个众所周知的问题,当您在Windows上更新Java、JDK或JRE时,Eclipse很可能无法启动,因为它指向过时的JDK/JJRE文件夹。修复是相对简单的,它是在这里或这里的几个线程上讨论和解决的。 但我发现这些解决方案缺乏灵活性,令人不满意。此解决方案建议在转换为: 这意味着你必须在每次更新后,一次又一次地进行。如果您经常更新JDK,并且每个人都应该有最新的安全补丁,这会使它非常烦人。

  • 我是个初学者只是想找个更好的方法来解决问题 问题是,最佳实践是捕捉异常还是避免异常? 或

  • 问题内容: 何时使用语句而不是准备语句。我想在没有参数的查询中使用语句,但是为什么不使用预处理语句呢?对于没有参数的查询,哪一个更快。 问题答案: 我想在没有参数的查询中使用语句,但是为什么不使用预处理语句呢? 还差得远 对于返回结果集或更新计数的INSERT,UPDATE和DELETE语句,使用PreparedStatement。正如Joachim所指出的,它们不适用于DDL语句,也不适用于应使

  • 问题内容: 要在“相同时间”声明多个变量,我会这样做: 但是,如果我不得不声明更多的变量,它将变得越来越优雅: 有没有更好/优雅/方便的方法来做到这一点? 这必须是非常基本的,但是如果我确实使用列表或元组来存储变量,那么我将不得不如何处理,这样我将有所帮助: 无效,我必须这样做: 还是我想念什么? 问题答案: 正如其他人所建议的那样,不太可能将10个不同的局部变量与布尔值一起使用是编写例程的最佳方