Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在sqlalchemy中执行子选择_Python_Sqlalchemy - Fatal编程技术网

Python 如何在sqlalchemy中执行子选择

Python 如何在sqlalchemy中执行子选择,python,sqlalchemy,Python,Sqlalchemy,我想在sqlalchemy中呈现以下SQL: session.query(Employee.name, Employee.hired_on, Department.name, Role.name)\ .join(Department, Employee.department_id==Department.id)\ .join(Role, Employee.role_id==

我想在sqlalchemy中呈现以下SQL:

session.query(Employee.name,
              Employee.hired_on,
              Department.name,
              Role.name)\
  .join(Department,
        Employee.department_id==Department.id)\
  .join(Role,
        Employee.role_id==Role.role_id)\
  .all()
选择 名称 雇佣(u on),, 从部门中选择名称,其中e.department_id=id作为部门, 从角色中选择名称,其中e.role\u id=role\u id AS role 由雇员担任
但我不知道该怎么做。我查到的所有内容都是关于联接的,这不是我想要的。

通过猜测表的结构,并且假设所有员工都有一个部门id和一个角色id,您可以像这样重构原始查询:

SELECT 
    e.name, 
    e.hired_on, 
    d.name AS department,
    r.name AS role
FROM employee AS e 
JOIN department d ON e.department_id=d.id
JOIN role r ON e.role_id=r.role_id
在此基础上,您可以将连接与sqlalchemy一起使用:

session.query(Employee.name,
              Employee.hired_on,
              Department.name,
              Role.name)\
  .join(Department,
        Employee.department_id==Department.id)\
  .join(Role,
        Employee.role_id==Role.role_id)\
  .all()
如果您只是复制/粘贴它,这肯定不是一段可以工作的代码,但是想法就在那里