sqlalchemy one to many join in flask app to get max date

Chet Meinzer

My Data
rowid, job (not unique), status, date.

Query need
Return results unique by job
max date of status ==1 and
max date of status== 0
on the same returned row.

why doesn't this work (and is this the best approach?)?:

from sqlalchemy import func
from sqlalchemy.orm import aliased

j=aliased(models.Jobs)

y=db.session.query(j.job,j.status,\
  func.max(j.start).\
  label("start")).\
  filter(j.status ==0).\
  group_by(j.job)   

x=db.session.query(models.Jobs.job,\
  models.Jobs.status,\
  func.max(models.Jobs.start).\
  label("start")).\
  filter(models.Jobs.status ==1).\
  group_by(models.Jobs.job)

  nj=x.join(y,x[0]==y[0])#i tried x.job, but it claimed it didn't have a job

s trace gives me

>>> nj=x.join(y,x[0]==y[0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "K:\Meinzer\Production\ProjectManagement\flask\lib\site-packages\sqlalche
my\orm\query.py", line 1638, in join
    from_joinpoint=from_joinpoint)
  File "<string>", line 1, in <lambda>
  File "K:\Meinzer\Production\ProjectManagement\flask\lib\site-packages\sqlalche
my\orm\query.py", line 50, in generate
    fn(self, *args[1:], **kw)
  File "K:\Meinzer\Production\ProjectManagement\flask\lib\site-packages\sqlalche
my\orm\query.py", line 1767, in _join
    outerjoin, create_aliases, prop)
  File "K:\Meinzer\Production\ProjectManagement\flask\lib\site-packages\sqlalche
my\orm\query.py", line 1807, in _join_left_to_right
    onclause, outerjoin)
  File "K:\Meinzer\Production\ProjectManagement\flask\lib\site-packages\sqlalche
my\orm\query.py", line 1952, in _join_to_left
    "Tried joining to %s, but got: %s" % (right, ae))
sqlalchemy.exc.InvalidRequestError: Could not find a FROM clause to join from.
Tried joining to SELECT jobs_1.job AS job, jobs_1.status AS jobs_1_status, max(j
obs_1.start) AS start
FROM jobs AS jobs_1
WHERE jobs_1.status = :status_1 GROUP BY jobs_1.job, but got: Can't find any for
eign key relationships between 'jobs' and '_FromGrouping object'. Perhaps you me
ant to convert the right side to a subquery using alias()?
>>>

Here is my model (should i be starting with Syntax?)

class Syntax(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    filename = db.Column(db.String(150), unique=True,)
    jobs = db.relationship('Jobs',lazy='dynamic', backref='jobhistory')
    position = db.Column(db.Integer)
    def __repr__(self):
        return '<filename %r>' % (self.filename)

class Jobs(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    job = db.Column(db.String(150),db.ForeignKey('syntax.filename'))
    start = db.Column(db.DateTime)
    stop = db.Column(db.DateTime)
    status = db.Column(db.Integer())  
    when = db.Column(db.String(150))  
    cat= db.Column(db.String(150))  
    message  = db.Column(db.String(150))  
    errorvar = db.Column(db.String(150))   
    errormsgvar = db.Column(db.String(150))  
    # syntaxhistory_id = db.Column(db.String, db.ForeignKey('syntax.filename')) 
    def __repr__(self):
        return '<Job %r>' % (self.job)
van

Query below will return the data you are looking for as list of tuples (Syntax, max_start0, max_start1):

q = (db.session.query(Syntax,
        func.max(case([(Jobs.status == 0, Jobs.start)])).label("max_start0"),
        func.max(case([(Jobs.status == 1, Jobs.start)])).label("max_start1"),
        )
    .outerjoin(Jobs)
    .group_by(Syntax)
    )

If you want only filename (and not the whole Syntax instances), just replace Syntax with Syntax.filename in both query(...) and group_by(...).

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

sqlalchemy one to many join in flask app to get max date

From Dev

One-to-many Flask | SQLAlchemy

From Dev

Sqlalchemy one to many relationship join?

From Dev

Ordering one-to-many models in Flask sqlalchemy?

From Dev

SQLAlchemy+Flask Many to one relationship

From Dev

Ordering one-to-many models in Flask sqlalchemy?

From Dev

Flask-SQLAlchemy: Update a One to Many Relationship

From Dev

One to Many Join with Aggregate Function (Max)

From Dev

Jsonify flask-sqlalchemy many-to-one relationship in flask

From Dev

Jsonify flask-sqlalchemy many-to-one relationship in flask

From Dev

set the insert order of a many to many sqlalchemy flask app sqlite db

From Dev

Issue while adding many to one relationship with Flask, SQLAlchemy

From Dev

Flask-SQLAlchemy many to many

From Dev

SQLAlchemy join a "one to many table" and then filter on the joined table with a set of values

From Dev

Get Max(id) from one to many table

From Dev

Get "insert_id" for one to one relationship in Flask, SqlAlchemy

From Dev

Flask SQL Alchemy Multiple join paths and one to many relationships

From Dev

SqlAlchemy - Many to Many outer join with conditions on join

From Dev

SqlAlchemy - Many to Many outer join with conditions on join

From Dev

one to many, Flask-SqlAlchemy, sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation does not exist

From Dev

How to create one-to-one accessor from one-to-many with extra join arguments with sqlalchemy?

From Dev

Flask SqlAlchemy many to many relationship only returns one result when accessing by relationship name

From Dev

Flask SqlAlchemy many to many relationship only returns one result when accessing by relationship name

From Dev

Flask app context for sqlalchemy

From Dev

One to many + one relationship in SQLAlchemy?

From Dev

Flask-SQLAlchemy Querying Many-to-Many

From Java

Flask sqlalchemy many-to-many insert data

From Dev

Select many to many with Flask-SQLAlchemy

From Dev

Flask SQLAlchemy Many to Many Delete Element

Related Related

  1. 1

    sqlalchemy one to many join in flask app to get max date

  2. 2

    One-to-many Flask | SQLAlchemy

  3. 3

    Sqlalchemy one to many relationship join?

  4. 4

    Ordering one-to-many models in Flask sqlalchemy?

  5. 5

    SQLAlchemy+Flask Many to one relationship

  6. 6

    Ordering one-to-many models in Flask sqlalchemy?

  7. 7

    Flask-SQLAlchemy: Update a One to Many Relationship

  8. 8

    One to Many Join with Aggregate Function (Max)

  9. 9

    Jsonify flask-sqlalchemy many-to-one relationship in flask

  10. 10

    Jsonify flask-sqlalchemy many-to-one relationship in flask

  11. 11

    set the insert order of a many to many sqlalchemy flask app sqlite db

  12. 12

    Issue while adding many to one relationship with Flask, SQLAlchemy

  13. 13

    Flask-SQLAlchemy many to many

  14. 14

    SQLAlchemy join a "one to many table" and then filter on the joined table with a set of values

  15. 15

    Get Max(id) from one to many table

  16. 16

    Get "insert_id" for one to one relationship in Flask, SqlAlchemy

  17. 17

    Flask SQL Alchemy Multiple join paths and one to many relationships

  18. 18

    SqlAlchemy - Many to Many outer join with conditions on join

  19. 19

    SqlAlchemy - Many to Many outer join with conditions on join

  20. 20

    one to many, Flask-SqlAlchemy, sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation does not exist

  21. 21

    How to create one-to-one accessor from one-to-many with extra join arguments with sqlalchemy?

  22. 22

    Flask SqlAlchemy many to many relationship only returns one result when accessing by relationship name

  23. 23

    Flask SqlAlchemy many to many relationship only returns one result when accessing by relationship name

  24. 24

    Flask app context for sqlalchemy

  25. 25

    One to many + one relationship in SQLAlchemy?

  26. 26

    Flask-SQLAlchemy Querying Many-to-Many

  27. 27

    Flask sqlalchemy many-to-many insert data

  28. 28

    Select many to many with Flask-SQLAlchemy

  29. 29

    Flask SQLAlchemy Many to Many Delete Element

HotTag

Archive