Поместите пустое поле в peewee union select

Я пытаюсь выбрать две таблицы, которые имеют какое-то общее поле. в необработанном запросе 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 отсутствует в таблице2, и вместо него я установил 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().)

Спасибо.


person Reza-S4    schedule 10.04.2015    source источник


Ответы (1)


вы можете использовать SQL() в операторе SELECT.

u = (
    Table1(
        Table1.id,
        Table1.username,
        Table1.date
    ).select() 
    | 
    Table2(
        Table2.id,
        SQL(" '' AS username "),
        Table2.date
    ).select()
).select().execute()
person Zaaferani    schedule 11.04.2015
comment
Это хорошо... но, как я уже говорил, я хочу другого пути, кроме SQL(). Но еще раз спасибо. - person Reza-S4; 11.04.2015
comment
Именно для этого и предназначена функция SQL. - person coleifer; 17.04.2015
comment
@ Реза-S4, просто чтобы немного уточнить, какой тип API вы бы предпочли, чем SQL? - person coleifer; 19.04.2015
comment
@coleifer Я тестирую многие другие способы, такие как замена пустого экземпляра CharField() вместо функции SQL(). Но не работает. Я думаю, что, возможно, мне поможет другая функция. Потому что я тестировал SQL() раньше. - person Reza-S4; 19.04.2015
comment
Извините, если я был неясен, я не понимаю, почему вы не хотите использовать SQL(). Есть ли причина? - person coleifer; 20.04.2015
comment
@coleifer, я думаю, что @Reza-S4 хочет другого способа решить эту проблему, но я думаю, что использовать SQL() единственный способ решить эту проблему - person Zaaferani; 20.04.2015
comment
@coleifer, peewee - отличная и гибкая форма, и я думал, что у нее есть еще одна функция, обеспечивающая это автоматически. Поэтому кажется, что SQL () - единственное решение моей проблемы на данный момент. Спасибо всем... - person Reza-S4; 20.04.2015