今天工作中操作mysql进行统计,需要用到全连接(full join)才能解决问题,但是我们用的SQLAlchemy,用SQLAlchemy快一年了,还真没用过全连接,mysql中用到过,然后查找SQLAlchemy的官方文档,并没有发现相关的函数,只有左右连接和内连接,真是无奈,想着只能用原生的sql来解决了,但我想着SQLAlchemy这么牛x肯定会提供相关的操作的,毕竟full join也是很重要的,经过查看源码,知道通可以通过join中的参数来设置全连接
session = Session()
print session.query(Nodes.uid, NodeProducts.uid).join(NodeProducts, Nodes.uid == NodeProducts.uid, full=True)
生成的SQL为
SELECT nodes.uid AS nodes_uid, node_products.uid AS node_products_uid
FROM nodes FULL OUTER JOIN node_products ON nodes.uid = node_products.uid