是否可以使用 peewee python ORM 对多个字段进行 sql 连接?

2023-12-31

假设我们有这三个模型。

class Item(BaseModel):
    title = CharField()

class User(BaseModel):
    name = CharField()

class UserAnswer(BaseModel):
    user = ForeignKeyField(User, 'user_answers')
    item = ForeignKeyField(Item, 'user_answers_items')
    answer = ForeignKeyField(Item, 'user_answers')

我想得到全部Items其中没有相关的UserAnswer当前用户的记录。在 SQL 中,它会是这样的:

select * from item i
left join useranswer ua on ua.item_id=i.id and ua.user_id=1
where ua.id is null;

是否可以使用 peewee 语法对两个字段进行左外连接约束?如果我能这样做的话那就太酷了:

Item.select().join(UserAnswer, JOIN_LEFT_OUTER, on=['__my_constraints_here__']).where(
    (UserAnswer.id.is_null(True))
)

是的,您可以在多种条件下加入:

join_cond = (
    (UserAnswer.item == Item) &
    (UserAnswer.user == 1))
query = (Item
         .select()
         .join(
             UserAnswer,
             JOIN.LEFT_OUTER,
             on=join_cond))
         .where(UserAnswer.id.is_null(True)))

文档在这里:http://docs.peewee-orm.com/en/latest/peewee/api.html#Query.join http://docs.peewee-orm.com/en/latest/peewee/api.html#Query.join

抱歉,没有使用多个连接条件的示例,但是on只是一个任意表达式,因此您可以在其中放置您喜欢的任何有效的 peewee“表达式”。

重要提示:您应该导入 JOIN -from peewee import JOIN

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 peewee python ORM 对多个字段进行 sql 连接? 的相关文章

随机推荐

  • Tomcat gzip while chunked 问题

    我的一项数据源服务遇到了一些问题 正如 HTTP 响应标头中所述 它在 Apache Coyote 1 1 上运行 服务器给出带有 Transfer Encoding chunked 的响应 这里是示例响应 HTTP 1 1 200 OK
  • 为什么 Ajax 脚本无法在 IIS 7.5 Win 2008 R2 服务器上运行?

    我有一个 Web 应用程序在我的开发服务器上的 VS 2013 上运行良好 但是一旦我将其发布到 IIS 7 5 2008 R2 服务器上 位于我的自定义脚本文件中的 Ajax 脚本就不再工作了 尽管其他 JQuery 脚本不调用 Ajax
  • Monotouch/WCF:如何在不使用 svcutil 的情况下使用 wcf 服务

    由于monotouch编译为本机代码 因此它有一些限制 例如不允许动态调用 但我在 net中有很多类 我使用 ChannelFactory 动态来调用 wcf 服务 new ChannelFactory myBinding myEndpoi
  • 如何以编程方式拦截 GC 以将信息打印到我的日志中

    我知道您可以使用 verbosegc 将有关 GC 的信息打印到 sysout 但我不希望这样做 我想在 GC 触发时进行拦截 并将有关它的信息打印到我的自定义记录器 也许将最后一次 GC 时间戳保存在内部变量上 等等 这里还有希望吗 您无
  • 单击地图时关闭信息框

    我正在使用 Google Maps V3 API 的 Infobox 插件 http google maps utility library v3 googlecode com svn trunk infobox docs referenc
  • Visual Studio 2013,TFS 非常慢

    当我最初安装 VS Ultimate 2013 时 一切都很好 但在上个月左右的时间里 它一直很糟糕 我的 Visual Studio 2013 安装中的源代码管理浏览非常慢 只需单击一个节点 显示该节点内容的操作就需要 20 多秒 团队中
  • 从sql plus中的字符串中删除最后一个字符

    我试图从 sql plus 的列输出中删除最后一个字符 列条目的长度不固定 例如 XYZA 应输出为 XYZ 我尝试过使用substr 功能 但似乎不起作用 SUBSTR ooo CO NAME 1 LENGTH ooo CO NAME 1
  • 如何使用 sed 命令在模式字符串之前添加字符串?

    我想使用 sed 修改名为 baz 的文件 当我搜索模式 foo 时 foo 不在行首或行尾 我想在 foo 之前附加 bar 我该如何使用 sed 来做到这一点 Input file named baz blah foo blahblah
  • 在 flutter 中通过 Function(T) 传递泛型类型

    我正在尝试创建一个通用的消费者小部件 以方便其子视图模型 因此我有两个功能 一个在 ViewModel 初始化之后有一个函数 T 另一个用于将模型传递给它的子 Widget 通用类中是 ChangeNotifier 的子级 在我想在两个函数
  • 带有 ActionBarSherlock 的本机 ActionBar selectableItemBackground

    我尝试更改操作栏中所选项目的背景 我使用 ActionBarSherlock 来与旧版 Android 版本兼容 当应用程序在带有 ICS 的设备上运行时 我为我的 Activity 设置了特定主题 这是我目前的风格
  • 变换所有子视图

    我在滚动视图中有一个 UIView 其中包含大约 100 个子视图 子视图看起来都一样 并且是同一类的实例 我有一个要应用于每个子视图的转换 但每次 ZoomScale 改变时 变换都需要改变 将变换应用于所有视图的最佳方法是什么 目前我正
  • 更改 IOS Xamarin Forms 中的开关颜色

    如何在切换 IOS Xamarin Forms 时更改切换按钮的颜色 自定义渲染将仅设置颜色一次 Xamarin 表单切换按钮在 IOS 上的默认颜色 https stackoverflow com questions 38993959 x
  • 如何限制bash中函数中使用的线程/子进程的数量

    我的问题是如何更改此代码 使其仅使用 4 个线程 子进程 TESTS a b c d e for f in TESTS do t RANDOM 5 1 sleep t echo f t done wait 有趣的问题 我尝试使用 xargs
  • 使用 JSON 字符串填充表布局

    我的 Web 服务返回一个 JSON 字符串 如下所示 checkrecord rollno abc2 percentage 40 attended 12 missed 34 Table1 上面的字符串代表我的数据集 我已将字符串转换为 J
  • Fluent NHibernate 集合每个子类表

    我在 Fluent NHibernate 中的继承方面遇到问题 我之前已经设法让 Table Per Subclass 工作 但我无法让基类的集合工作 它正在寻找一个我没有的基类表 这是我的架构 User Id Name Email Use
  • VB.NET - 迭代容器对象中的控件

    我有一个带有 清除 按钮的表单 当用户单击 清除 时 我想清除表单上所有可见元素的值 对于日期控件 我想将它们重置为当前日期 我的所有控件都包含在面板上 现在 我正在使用以下代码执行此操作 有没有比手动检查每种控件类型更简单的方法 这种方法
  • Kubernetes 中被逐出的 Pod 会发生什么?

    我刚刚看到我的一些 pod 被 kubernetes 驱逐 他们会发生什么 就这样闲逛 还是我必须手动删除它们 我使用的一个快速解决方法是在事件发生后手动删除所有被逐出的 Pod 您可以使用此命令 kubectl get pods all
  • Swift:从 url 检索音频文件标记列表?

    我只想获取音频文件中的标记列表 我认为这将是一项简单的常见任务 不会太困难 但是 我几乎找不到任何示例代码或文档 所以我最终得到了以下结果 private func getMarkers url CFURL gt AudioFileMark
  • 打印所有已加载的 Spring bean - Spring Boot

    我怎样才能知道作为我的 Spring Boot 应用程序的一部分加载的所有 Bean 的名称 我希望在 main 方法中有一些代码来打印服务器启动后加载的 bean 的详细信息 如spring boot的入门指南所示 https sprin
  • 是否可以使用 peewee python ORM 对多个字段进行 sql 连接?

    假设我们有这三个模型 class Item BaseModel title CharField class User BaseModel name CharField class UserAnswer BaseModel user Fore