使用peewee在具有不同名称的字段上联合

时间:2016-05-23 20:41:09

标签: python sql orm peewee

我使用peewee作为ORM并且有两个这样的类:

class A(Model):
    name = CharField()
    body = TextField()

class B(Model):
    title = CharField()
    body = TextField()

我希望AB的{​​{1}} / title所有条目都以name等字符开头。根据文档,'abc'运算符应该有帮助,但我甚至无法执行生成的|。显然我希望在幕后有一个ExpressionUNION表达式。我怎么通过peewee得到这个?

1 个答案:

答案 0 :(得分:4)

您应该可以使用

之类的内容获得所需的结果
result = (
    A().select(A.name.alias('name_title'), A.body).where(A.name == 'abc') |
    B().select(B.title.alias('name_title'), B.body).where(B.title == 'abc')
).select().execute()

search_text = 'abc'
table_a_results = A().select(
    A.name.alias('name_title'),
    A.body
).where(A.name == search_text)
table_b_results = B().select(
    B.name.alias('name_title'),
    B.body
).where(B.title == search_text)

result = ( table_a_results | table_b_results ).select().execute()

根据docs

获取.alias()功能的AS方法