<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 通过select查询语句引入
Step1:  分析每一次调用
Model
其中Tb1是我们定义的一个Model
```
class TbRaw(Model)
<ASSISTANT_TASK:>
Python Code:
from model.db.tb_raw import TbRaw
query = TbRaw.select().where(TbRaw.id > 0)
print "select query:", query.sql()[0] % tuple(query.sql()[1])
print "query result:"
for item in query.dicts().execute():
    print item
Explanation: 通过select查询语句引入
End of explanation
# UNION查询
query = TbRaw.select().where(TbRaw.id >= 2) | TbRaw.select().where(TbRaw.id < 2)
print query.sql()[0] % tuple(query.sql()[1])
for item in query.dicts().execute():
    print item
Explanation: 分析每一次调用
Model
其中Tb1是我们定义的一个Model
```
class TbRaw(Model):
id = PrimaryKeyField()
name = CharField()
age = IntegerField()
create_time = DateTimeField()
class Meta(object):
    表配置信息
    
    database = MySQLDatabase(database="xyz", host="127.0.0.1", password="123456", user="root", port=3306)
    db_table = "tb_raw"
peewee对`Model`类指定`BaseModel`元类
class Model(with_metaclass(BaseModel)):
``
而BaseModel中做的就是将TbRaw的配置信息转换成一个ModelOptions对象放到_meta中，其中包括数据库连接、字段信息、主键、表明、索引等。因为_meta`是在元类中生成，所以Model表的配置信息不能针对实例做修改，而是一个整体的修改。这里对于做分表查询不能很好的支持。
Model中提供了SQL中的数据查询、操作、定义的类方法，对应方法返回的对象如下。
SelectQuery
@classmethod
    def select(cls, *selection):
        query = SelectQuery(cls, *selection)
        if cls._meta.order_by:
            query = query.order_by(*cls._meta.order_by)
        return query
select()方法返回一个SelectQuery对象，并将排序字段传递进去。
SelectQuery中提供保留的查询方法（group_by、having、order_by、window、limit、offset、paginate、distinct、where等）
这些查询方法通过修饰器@returns_clone每一次返回一个新的SelectQuery对象。
def returns_clone(func):
    
    Method decorator that will "clone" the object before applying the given
    method.  This ensures that state is mutated in a more predictable fashion,
    and promotes the use of method-chaining.
    
    def inner(self, *args, **kwargs):
        clone = self.clone()  # Assumes object implements `clone`.
        func(clone, *args, **kwargs)
        return clone
    inner.call_local = func  # Provide a way to call without cloning.
    return inner
return_clone首先会调用Query中的clone()方法，然后执行相应的保留查询方法。
def clone(self):
    query = type(self)(self.model_class)
    query.database = self.database
    return self._clone_attributes(query)
clone()方法会生成一个新的SelectQuery对象，然后复用数据库连接，克隆原Query实例中的对象。
End of explanation
<END_TASK>