Hello, Mike! In my web app i have many selects like session.execute(select([table1]).where(condition)) and not so much updates, inserts and deletes like session.execute(update(table1).where(condition).values(**values)) session.execute(insert(table1).values(**values)) session.execute(delete(table1).where(condition))
What better way to create session for web application? Without additional components like flask-sqlalchemy. суббота, 27 января 2018 г., 20:23:05 UTC+3 пользователь Mike Bayer написал: > > On Sat, Jan 27, 2018 at 5:49 AM, Евгений Рымарев > <rymarev...@gmail.com <javascript:>> wrote: > > I receive this error: > > This result object does not return rows. It has been closed > automatically. > > there's a lot of weird situations which can cause that error, usually > when using a connection that has had some failure condition occur upon > it which renders the connection unusable until either a transaction is > rolled back or sometimes the connection needs to be discarded. We > can't diagnose it without a full example that reproduces it as well as > the complete stack trace. > > > > > > > > > > суббота, 27 января 2018 г., 1:09:53 UTC+3 пользователь Mike Bayer > написал: > >> > >> On Fri, Jan 26, 2018 at 4:21 PM, Евгений Рымарев > >> <rymarev...@gmail.com> wrote: > >> > Hello, everyone! > >> > Engine: > >> > engine = create_engine( > >> > > >> > > >> > > 'mssql+pymssql://{LOGIN}:{PASSWORD}@{HOST}/{DATABASE}?charset={CHARSET}'.format(**DATABASE), > > > >> > isolation_level='READ COMMITTED' > >> > ) > >> > > >> > > >> > My first decorator for session: > >> > @decorator_with_args > >> > def session_decorator(func, default=None): > >> > def wrapper(*a, **kw): > >> > s = Session(engine) > >> > kw['session'] = s > >> > try: > >> > return func(*a, **kw) > >> > except Exception as e: > >> > func(*a, **kw) > >> > s.rollback() > >> > s.close() > >> > logging.error(e) > >> > return default > >> > finally: > >> > s.commit() > >> > s.close() > >> > return wrapper > >> > > >> > My second decorator for session: > >> > session = scoped_session(sessionmaker(bind=engine)) > >> > > >> > > >> > @decorator_with_args > >> > def session_decorator(func, default=None): > >> > def wrapper(*a, **kw): > >> > kw['session'] = session > >> > try: > >> > return func(*a, **kw) > >> > except Exception as e: > >> > session.remove() > >> > logging.error(e) > >> > return default > >> > finally: > >> > session.remove() > >> > return wrapper > >> > > >> > In both attempts, I came to the conclusion that sessions can block > other > >> > sessions. > >> > How correctly to create a session once, so that it can be used > >> > throughout > >> > the web application and no locks were created? > >> > >> The Session doesn't create locks, transactions and your database does. > >> > >> What is the nature of these "blocks", are they deadlocks between > >> tables or rows? What operations are prevented from proceeding? Are > >> the locks timing out? SQL Server has graphical consoles that can > >> show you this. > >> > >> What version of SQL Server is this? Do you have > >> ALLOW_SNAPSHOT_ISOLATION and READ_COMMITTED_SNAPSHOT turned on? > >> > >> > >> > > >> > -- > >> > 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 sqlalchemy+...@googlegroups.com. > >> > To post to this group, send email to sqlal...@googlegroups.com. > >> > 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 sqlalchemy+...@googlegroups.com <javascript:>. > > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > > 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 sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.