I apologize for my inpatient tone in my previous email. I would hope that everyone in this mailing list feels welcome.
On Wed, Jun 27, 2018, 10:59 AM Mike Bayer <[email protected]> wrote: > this is a very simple issue to debug with basic programming > techniques, first off, put echo='debug' in your create_engine so you > can see all SQL and results: > > e = create_engine("postgresql://scott:tiger@localhost/test", echo='debug') > > > next, if you are running over to a SQL command line vs. running a > program, the big difference is that *time has passed*. Put a sleep in > your program and there is your row: > > from sqlalchemy import * > from sqlalchemy.orm import * > from sqlalchemy.ext.declarative import declarative_base > from sqlalchemy.ext.declarative import declared_attr > import datetime > > Base = declarative_base() > > class User(Base): > __tablename__ = 'test_user' > > id = Column(Integer, primary_key=True) > timeout = Column(Integer) > last_receive_time = Column(TIMESTAMP) > > e = create_engine("postgresql://scott:tiger@localhost/test", echo='debug') > Base.metadata.drop_all(e) > Base.metadata.create_all(e) > > session = Session(e) > for i in range(10): > session.add( User( timeout=1, > last_receive_time=datetime.datetime.now() )) > > session.commit() > > import time > time.sleep(1) > > query = session.query(User)\ > .from_statement(text(""" > SELECT * > FROM test_user > WHERE (last_receive_time + INTERVAL '1 second' * timeout) < NOW() > """)) > > assert len(query.all()) == 10 > > > > On Wed, Jun 27, 2018 at 6:30 AM, Danila Ganchar > <[email protected]> wrote: > > Ok. I ran the script 10 times on a clean table. > > Now I run raw sql: > > > > SELECT * > > FROM test_user > > WHERE (last_receive_time + INTERVAL '1 second' * timeout) < NOW(); > > > > The result: 10 records. > > Now I run script one more time. Still 0 records using from_statement. > > > > amount records using NOW() = 0 > > > > As I understand it, is this correct? This is just unclear because > > from_statement + text works not like raw query. > > > > On Tue, Jun 26, 2018 at 7:42 PM, Mike Bayer <[email protected]> > > wrote: > >> > >> definitely, triyng to match up python .now() with database .now() is > >> not going to work, in particular since .now() in the database is often > >> the transaction start time, not the actual time. > >> > >> On Tue, Jun 26, 2018 at 12:28 PM, Jonathan Vanasco > >> <[email protected]> wrote: > >> > the difference is possibly because this is calculated in Python, each > >> > time > >> > it is executed: > >> > > >> > datetime.datetime.now() > >> > > >> > this is calculated in Postgres, and refers to the beginning of the > >> > transaction; it does not change across the transaction. > >> > > >> > NOW() > >> > > >> > -- > >> > SQLAlchemy - > >> > The Python SQL Toolkit and Object Relational Mapper > >> > > >> > http://www.sqlalchemy.org/ > >> > > >> > To post example code, please provide an MCVE: Minimal, Complete, and > >> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > >> > description. > >> > --- > >> > You received this message because you are subscribed to the Google > >> > Groups > >> > "sqlalchemy" group. > >> > To unsubscribe from this group and stop receiving emails from it, send > >> > an > >> > email to [email protected]. > >> > To post to this group, send email to [email protected]. > >> > Visit this group at https://groups.google.com/group/sqlalchemy. > >> > For more options, visit https://groups.google.com/d/optout. > >> > >> -- > >> SQLAlchemy - > >> The Python SQL Toolkit and Object Relational Mapper > >> > >> http://www.sqlalchemy.org/ > >> > >> To post example code, please provide an MCVE: Minimal, Complete, and > >> Verifiable Example. See http://stackoverflow.com/help/mcve for a full > >> description. > >> --- > >> You received this message because you are subscribed to the Google > Groups > >> "sqlalchemy" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an > >> email to [email protected]. > >> To post to this group, send email to [email protected]. > >> Visit this group at https://groups.google.com/group/sqlalchemy. > >> For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > SQLAlchemy - > > The Python SQL Toolkit and Object Relational Mapper > > > > http://www.sqlalchemy.org/ > > > > To post example code, please provide an MCVE: Minimal, Complete, and > > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > > description. > > --- > > You received this message because you are subscribed to the Google Groups > > "sqlalchemy" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at https://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
