python - 使用 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))
解决方案
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以供参考。
推荐阅读
- android - 请配置Android SDK Android Studio
- performance - 读取hashkey时如何避免多次redis调用
- amazon-web-services - 我们如何在不使用 LoadBalancers 的情况下在 AWS 中向公众公开 Kubernetes 服务?
- autodesk-forge - 从 BIM 360 在自定义查看器中打开模型
- caching - Apollo缓存+自动刷新
- r - 如何对变量名称循环的数据框中不同列的值求和
- typescript - TypeScript 类型保护和“仅指一种类型,但在这里用作值”。
- google-apps-script - 无法调用 null 的方法“getRange”。(第 20 行,文件“代码”)
- c# - 如何在我的测试库中创建和运行虚拟主机?
- sql-server - SQLCMD:!!目录没有输出