我尝试选择两个有一些共同字段的表。在原始的MySQL查询中,我可以这样写:
SELECT t1.id, t1.username, t1.date FROM table1 as 't1' UNION SELECT t2.id, "const_txt", t2.date FROM table2 as 't2'
在该查询中,username
字段不在table2中,而是设置了const_txt
。
所以,在peewee中,我想结合两个具有相同情况的表。
class PeeweeBaseModel(Model):
class Meta:
database = my_db
class Table1(PeeweeBaseModel):
id = PrimaryKeyField()
username = CharField(255)
date = DateTimeField()
#other fields ...
class Table2(PeeweeBaseModel):
id = PrimaryKeyField()
date = DateTimeField()
#other fields ...
然后,联合两个模型。像这样的东西:
u = (
Table1(
Table1.id,
Table1.username,
Table1.date
).select()
|
Table2(
Table2.id,
"const_text_instead_real_field_value",
Table2.date
).select()
).select().execute()
但是字段不接受const_text
并在结果查询中忽略。
问题是:如何定义表格中不存在的字段并在查询中手动设置?
(我不喜欢使用SQL()函数。)
感谢。
答案 0 :(得分:3)
您可以在SELECT语句中使用SQL()。
u = (
Table1(
Table1.id,
Table1.username,
Table1.date
).select()
|
Table2(
Table2.id,
SQL(" '' AS username "),
Table2.date
).select()
).select().execute()