how to do cross database join
能不能在不同数据库间join并不是peewee能决定的。比如MySQL，同一个服务的不同数据库间是可以join的，但是不同服务就不要想了。

更明确一点，你定义Model的时候，是用的同一个peewee.Database 实例还是不同的Database实例，这决定了你到底能不能在不同的数据库之间join @yanghg-basefx  数据库用的是MYSQL，MYSQL本身是支持cross db join的， 用raw sql是没有问题的；
两个model分别是不同的database属性（_meta.database）。
看了下peewee源码，它确实不支持cross db join，即使用model.select().join()...这样构造出的sql语句在cross db join的情况下是错误的。
请问是否有peewee cross db join的方案？（不使用raw sql） 哦可能我理解错你的问题了。peewee默认想要用join的话必须有一个 
ForeignKeyField，如果没有的话在compile SQL语句的时候会报错。所以如果想要 
用M.select.join()你首先要在他们之间建立一个连接，哪怕是假的连接也行。

然后，如果你没有指定on条件的话，peewee会根据你的连接自动生成，类似于(ON 
M2.m1_id = M1.id)，所以你必须要指定一条一定为True的on条件。

根据这个原理，我们就可以伪造出一条只能用来CROSS JOIN的语句了。

class M1(Model):

     class Meta:
         database = MySQLDatabase(**M1_CFG)
         db_table ='m1'


class M2(Model):
     m1 = ForeignKeyField(M1,'m2s',db_column='id')

     class Meta:
         database = MySQLDatabase(**M2_CFG)
         db_table ='m2'
for m2 in M2.select(M2, M1).join(M1,join_type='CROSS JOIN',on=M2.id.is_null(False)):
     print m2.id,
     print m2.m1.id If you need to prefix your models with the database name, you can try using the `schema` model metadata option. Example:

```python
class MyModel(Model):
    data = TextField()
    class Meta:
        database = db1
        schema = 'db1'

MyModel.select().sql()
# SELECT "t1"."id", "t1"."data" FROM "db1"."mymodel" AS "t1"
``` thanks
dm.A.select(dm.A.id, cm.B.name).join(cm.B, on=(dm.A.type==cm.B.id))

<class 'data_models.TRepFlow'> SELECT `t3`.`id`, `t2`.`name` FROM `t_rep_flow` AS t1 INNER JOIN `t_sys_app` AS t2 ON (`t2`.`id` = `t1`.`itemtype`) []

question:   A and B are models. A and B is not in the same db. So, how to do cross db join?