使用SQLAlchemy连接文本查询

时间:2019-08-11 14:51:40

标签: python sqlalchemy

我正在尝试使用列名列表(以下定义为queries)联接文本查询列表(以下定义为column_names)。两者都以字符串列表形式给出。

请注意,不涉及数据库,我只是尝试从其他查询构造一个查询。

我尝试过的事情:

columns = [column(cn) for cn in column_names]

texts = [text(q).columns(*columns) for q in queries]

join = reduce(lambda t1, t2: t1.join(t2), texts)

但随后出现此错误:

NoForeignKeysError: Can't find any foreign key relationships between 'T0' and 'T1'.

如果我修改第三行以包括列名,该列名是column_names的成员(在本例中为my_column_name),则它起作用:

join = reduce(lambda t1, t2: t1.join(t2, t1.c.my_column_name == t2.c.my_column_name), texts)

但是,我必须使用column_names中给出的所有列名进行联接(理想情况下,使用USING子句而不是ON子句,即使在SQLAlchemy中也是可能的)

我可以根据每列名称以及每对onclauset1创建一个t2并将其传递给join,但这不是很干净。

完成此操作的一种优雅方法是什么?

0 个答案:

没有答案