首页 > 解决方案 > 使用 sqlalchemy 连接两个表时出错

问题描述

当我尝试加入两个表时,出现以下错误:

sqlalchemy.exc.ObjectNotExecutableError: Not an executable object:
sqlalchemy.sql.selectable.Join at 0x7f31a35b02e8;
在chanel(139851192912136) 和 Device(139851192912864)上加入对象

我的代码是:

import sqlalchemy as db
from sqlalchemy import and_,or_,not_,inspect,text,inspection
engine = db.create_engine("mssql+pymssql://sa:elnetsrv@192.108.55.95/ELNetDB")
Data1 = db.Table("chanel", metadata, autoload=True, autoload_with=engine)
Data2 = db.Table("Device",metadata,autoload = True,autoload_with = engine)
metadata = db.MetaData()
j = Data1.join(Data2,Data1.columns.No == Data2.columns.ID)
print(engine.execute(j))

标签: pythonsql-serversqlalchemy

解决方案


Data1.join(Data2,Data1.columns.No == Data2.columns.ID)不可执行,因为它不是查询对象。

你可以试试这个(假设你想从 Data1 中选择每一列):

print( engine.execute(select([Data1]).select_from(j) )

请参阅https://docs.sqlalchemy.org/en/13/core/metadata.html#sqlalchemy.schema.Table.join以供参考。


推荐阅读