Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 3.x 明确规定;从「;桌子_Python 3.x_Sqlalchemy - Fatal编程技术网

Python 3.x 明确规定;从「;桌子

Python 3.x 明确规定;从「;桌子,python-3.x,sqlalchemy,Python 3.x,Sqlalchemy,我目前有以下疑问: query = self.session.query(Student, School).join( Person.student, aliased=True).join( Student.school, aliased=True).filter( Person.id == 1) 它编译成这个SQL SELECT student.id AS student_id, student.school_id AS student_school_id, stud

我目前有以下疑问:

query = self.session.query(Student, School).join(
    Person.student, aliased=True).join(
    Student.school, aliased=True).filter(
    Person.id == 1)
它编译成这个SQL

SELECT student.id AS student_id, student.school_id AS student_school_id, student.person_id AS student_person_id, school.id AS school_id, school.name AS school_name 
FROM student, school, person JOIN student AS student_1 ON person.id = student_1.person_id JOIN school AS school_1 ON school_1.id = student_1.school_id 
WHERE person.id = :id_1
我希望查询保持原样,但我希望from语句完全来自
Person
模型。大概是

SELECT * FROM person JOIN ... WHERE person.id = :id_1

我认为带别名的kwarg把情况搞砸了。删除带别名的kwarg可以修复该行为,但我需要带别名的kwarg用于特殊用例。如何从“from”语句中删除
student
school
表。

aliased
参数。join
使用匿名别名,这意味着传递到
会话的
student
school
表。query
是表的不同“实例”

from sqlalchemy.orm import aliased

aliased_student = aliased(Student)
aliased_school = aliased(School)

query = (
    session.query(aliased_student, aliased_school)
    .select_from(Person)
    .join(aliased_student, Person.student)
    .join(aliased_school, Student.school)
    .filter(Person.id == 1))

在这里您可以看到,您可以告诉
.join
在加入关系时使用哪个别名。

加入
别名
参数使用匿名别名,这意味着传递给
会话的
学生
学校
。查询
是表的不同“实例”

from sqlalchemy.orm import aliased

aliased_student = aliased(Student)
aliased_school = aliased(School)

query = (
    session.query(aliased_student, aliased_school)
    .select_from(Person)
    .join(aliased_student, Person.student)
    .join(aliased_school, Student.school)
    .filter(Person.id == 1))
在这里您可以看到,您可以告诉
.join
在加入关系时要使用哪个别名