ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在peewee union select中放置一个空字段

2019-11-20 13:59:59  阅读:478  来源: 互联网

标签:peewee python mysql


我尝试选择两个具有某些公共字段的表.在原始MySQL查询中,我可以这样写:

SELECT t1.id, t1.username, t1.date FROM table1 as 't1' UNION SELECT t2.id, "const_txt", t2.date FROM table2  as 't2'

在该查询中,用户名字段不在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()函数.)

谢谢.

解决方法:

您可以在SELECT语句中使用SQL().

u = (
    Table1(
        Table1.id,
        Table1.username,
        Table1.date
    ).select() 
    | 
    Table2(
        Table2.id,
        SQL(" '' AS username "),
        Table2.date
    ).select()
).select().execute()

标签:peewee,python,mysql
来源: https://codeday.me/bug/20191120/2044444.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有