the raise load issue is because without passive_deletes, it has to load the collection to make sure those objects are all updated. passive_deletes fixes, now you just have a warning. or use the unit of work recipe which is more direct. On Wed, Oct 10, 2018 at 1:15 PM Alex Rothberg <[email protected]> wrote: > > Not just for warning. Also this raise load issue. yes, i see that I can't > mark none. If I could though, that would be awesome since I think it would > solve this problem? I can test by setting one foreign and seeing if that > works. > > On Wednesday, October 10, 2018 at 1:13:32 PM UTC-4, Mike Bayer wrote: >> >> On Wed, Oct 10, 2018 at 12:56 PM Alex Rothberg <[email protected]> wrote: >> > >> > let me get that. in the meantime, what are your thoughts on just removing >> > the view only from the original relationship and then using an explicit >> > primary join where none of the columns are marked foreign? Theoretically >> > that should solve this problem, no? >> >> is this just for the warning? I don't think the relationship() can >> be set up with no columns marked as foreign, it takes that as a cue >> that it should figure out the "foreign" columns on its own. >> >> There's another way to make sure Employee is always dependent on >> FundTitle but it's a little bit off-label. Add the dependency you >> want directly into the unit of work: >> >> from sqlalchemy.orm import unitofwork >> from sqlalchemy import event >> >> >> @event.listens_for(Session, "before_flush") >> def _add_dep(session, context, objects): >> context.dependencies.update([ >> ( >> unitofwork.SaveUpdateAll(context, inspect(FundTitle)), >> unitofwork.SaveUpdateAll(context, inspect(Employee)) >> ) >> ]) >> >> >> >> >> >> > >> > On Wednesday, October 10, 2018 at 12:41:25 PM UTC-4, Alex Rothberg wrote: >> >> >> >> Is it possible to specific a non viewonly relationship in which I have a >> >> primary join specified in which none of the fk's are marked "foreign"? ie >> >> where I can mark the relationship dependancy but it wont set any columns? >> >> It looks like there may be some logic in sqla that assume all columns are >> >> fk if none are specified as foreign? >> >> >> >> On Wednesday, October 10, 2018 at 11:56:49 AM UTC-4, Alex Rothberg wrote: >> >>> >> >>> So one minor issue and one big issue with that solution: >> >>> 1. minor issue, I now get these: SAWarning: relationship 'XXXX' will >> >>> copy columnYYYY to column ZZZZ, which conflicts with relationship(s): >> >>> '.... >> >>> 2. major issue, I use raiseload("*") and now I start seeing: >> >>> sqlalchemy.exc.InvalidRequestError: 'Employee._ft_for_dependency' is not >> >>> available due to lazy='raise' >> >>> >> >>> On Wednesday, October 10, 2018 at 9:57:55 AM UTC-4, Mike Bayer wrote: >> >>>> >> >>>> On Tue, Oct 9, 2018 at 6:45 PM Alex Rothberg <[email protected]> wrote: >> >>>> > >> >>>> > Okay with some small tweaks to your original code, I am able to show >> >>>> > the issue I am having. comment out flush to see issue: >> >>>> >> >>>> so what you're doing here is making Employee dependent on FundTitle, >> >>>> which makes this a little out of the ordinary but this is fine. You >> >>>> need to give the ORM a clue that this dependency exists, since it >> >>>> never looks at foreign key constraints unless you tell it to. >> >>>> Adding a relationship to FundTitle that doesn't have viewonly=True is >> >>>> an easy way to do this, there's no need to ever make use of the >> >>>> relationship otherwise: >> >>>> >> >>>> class Employee(Base): >> >>>> __tablename__ = 'employee' >> >>>> >> >>>> # ... >> >>>> fund_title = relationship(FundTitle, viewonly=True) >> >>>> >> >>>> _ft_for_dependency = relationship(FundTitle) >> >>>> >> >>>> __table_args__ = ( >> >>>> ForeignKeyConstraint( >> >>>> (title_id, department_id, fund_id), >> >>>> (FundTitle.title_id, FundTitle.department_id, >> >>>> FundTitle.fund_id) >> >>>> ), >> >>>> ) >> >>>> >> >>>> then you can take the flush() out and there's no issue, as long as >> >>>> you're always making sure that FundTitle object is present either in >> >>>> the current Session or the row in the database exists. >> >>>> >> >>>> >> >>>> > >> >>>> > from sqlalchemy import * >> >>>> > from sqlalchemy.orm import * >> >>>> > from sqlalchemy.ext.declarative import declarative_base >> >>>> > >> >>>> > Base = declarative_base() >> >>>> > >> >>>> > >> >>>> > class Title(Base): >> >>>> > __tablename__ = 'title' >> >>>> > id = Column(Integer, primary_key=True) >> >>>> > department_id = Column(ForeignKey('department.id'), >> >>>> > nullable=False) >> >>>> > >> >>>> > department = relationship(lambda: Department) >> >>>> > >> >>>> > >> >>>> > class Department(Base): >> >>>> > __tablename__ = 'department' >> >>>> > id = Column(Integer, primary_key=True) >> >>>> > >> >>>> > >> >>>> > class Fund(Base): >> >>>> > __tablename__ = 'fund' >> >>>> > id = Column(Integer, primary_key=True) >> >>>> > title_id = Column(ForeignKey('title.id'), nullable=False) >> >>>> > department_id = Column(ForeignKey('department.id'), >> >>>> > nullable=False) >> >>>> > department = relationship("Department") >> >>>> > title = relationship("Title") >> >>>> > >> >>>> > >> >>>> > class FundTitle(Base): >> >>>> > __tablename__ = 'fund_title' >> >>>> > id = Column(Integer, primary_key=True) >> >>>> > title_id = Column(ForeignKey('title.id'), nullable=False) >> >>>> > department_id = Column(ForeignKey('department.id'), >> >>>> > nullable=False) >> >>>> > fund_id = Column(ForeignKey('fund.id'), nullable=False) >> >>>> > department = relationship("Department") >> >>>> > title = relationship("Title") >> >>>> > fund = relationship("Fund") >> >>>> > >> >>>> > __table_args__ = ( >> >>>> > UniqueConstraint( >> >>>> > title_id, department_id, fund_id >> >>>> > ), >> >>>> > ) >> >>>> > >> >>>> > >> >>>> > class Employee(Base): >> >>>> > __tablename__ = 'employee' >> >>>> > id = Column(Integer, primary_key=True) >> >>>> > title_id = Column(ForeignKey('title.id'), nullable=False) >> >>>> > department_id = Column(ForeignKey('department.id'), >> >>>> > nullable=False) >> >>>> > fund_id = Column(ForeignKey('fund.id'), nullable=False) >> >>>> > >> >>>> > department = relationship(lambda: Department) >> >>>> > title = relationship("Title") >> >>>> > fund = relationship("Fund") >> >>>> > >> >>>> > fund_title = relationship(FundTitle, viewonly=True) >> >>>> > >> >>>> > >> >>>> > __table_args__ = ( >> >>>> > ForeignKeyConstraint( >> >>>> > (title_id, department_id, fund_id), (FundTitle.title_id, >> >>>> > FundTitle.department_id, FundTitle.fund_id) >> >>>> > ), >> >>>> > ) >> >>>> > >> >>>> > >> >>>> > e = create_engine("postgresql://localhost/test_issue", echo=False) >> >>>> > >> >>>> > # Base.metadata.drop_all(e) >> >>>> > Base.metadata.create_all(e) >> >>>> > >> >>>> > s = Session(e) >> >>>> > # s.rollback() >> >>>> > >> >>>> > while True: >> >>>> > d1 = Department() >> >>>> > t1 = Title(department=d1) >> >>>> > f1 = Fund(department=d1, title=t1) >> >>>> > ft1 = FundTitle(title=t1, department=d1, fund=f1) >> >>>> > >> >>>> > s.add_all([d1, t1, f1, ft1]) >> >>>> > >> >>>> > s.flush() >> >>>> > >> >>>> > e1 = Employee(title=t1, department=d1, fund=f1) >> >>>> > >> >>>> > s.add_all([e1,]) >> >>>> > s.commit() >> >>>> > >> >>>> > On Tuesday, October 9, 2018 at 12:20:30 PM UTC-4, Mike Bayer wrote: >> >>>> >> >> >>>> >> On Tue, Oct 9, 2018 at 10:44 AM Alex Rothberg <[email protected]> >> >>>> >> wrote: >> >>>> >> > >> >>>> >> > In looking at what you wrote doesn't this cause an fk violation >> >>>> >> > (it does for me): >> >>>> >> > 2018-10-08 10:18:38,760 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> > INTO employee (title_id, department_id, fund_id) VALUES >> >>>> >> > (%(title_id)s, %(department_id)s, %(fund_id)s) RETURNING >> >>>> >> > employee.id >> >>>> >> > 2018-10-08 10:18:38,763 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> > INTO fund_title (title_id, department_id, fund_id) VALUES >> >>>> >> > (%(title_id)s, %(department_id)s, %(fund_id)s) RETURNING >> >>>> >> > fund_title.id >> >>>> >> > >> >>>> >> > in that a a (non deferred) fk is violated between employee and >> >>>> >> > fund_title ? >> >>>> >> >> >>>> >> see we need to see how youve laid out your ForeignKeyConstraints, if >> >>>> >> they are composite and overlapping, there are additional options that >> >>>> >> may be needed (specifically the post_update flag). you'll note I >> >>>> >> laid >> >>>> >> out all FKs as single column. >> >>>> >> >> >>>> >> > >> >>>> >> > On Mon, Oct 8, 2018 at 10:20 AM Mike Bayer >> >>>> >> > <[email protected]> wrote: >> >>>> >> >> >> >>>> >> >> On Sun, Oct 7, 2018 at 7:11 PM Alex Rothberg <[email protected]> >> >>>> >> >> wrote: >> >>>> >> >> > >> >>>> >> >> > Okay so I investigated / thought about this further. The issue >> >>>> >> >> > is that while I do have a relationship between the various >> >>>> >> >> > models, some of the relationships are viewonly since I have >> >>>> >> >> > overlapping fks. >> >>>> >> >> > >> >>>> >> >> > For example I have a model Employee, which has fks: >> >>>> >> >> > department_id, title_id, and fund_id. The related models are >> >>>> >> >> > Department (fk department_id), Title (fk department_id and >> >>>> >> >> > title_id) , Fund (fk fund_id) and FundTitle (fk department_id, >> >>>> >> >> > title_id and fund_id). I have set FundTitle to viewonly. When >> >>>> >> >> > updating / creating an Employee, I do create and add a new >> >>>> >> >> > FundTitle to the session, however I don't assign it to the >> >>>> >> >> > employee as the relationship is viewonly. If I don't flush >> >>>> >> >> > before making the assignment, the final flush / commit attempts >> >>>> >> >> > to update / create the employee before creating the FundTitle. >> >>>> >> >> >> >>>> >> >> let's work with source code that is runnable (e.g. MCVE). Below >> >>>> >> >> is >> >>>> >> >> the model that it seems you are describing, and then there's a >> >>>> >> >> demonstration of assembly of all those components using >> >>>> >> >> relationships, >> >>>> >> >> a single flush and it all goes in in the correct order, all FKs >> >>>> >> >> are >> >>>> >> >> nullable=False. >> >>>> >> >> >> >>>> >> >> from sqlalchemy import * >> >>>> >> >> from sqlalchemy.orm import * >> >>>> >> >> from sqlalchemy.ext.declarative import declarative_base >> >>>> >> >> >> >>>> >> >> Base = declarative_base() >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> class Employee(Base): >> >>>> >> >> __tablename__ = 'employee' >> >>>> >> >> id = Column(Integer, primary_key=True) >> >>>> >> >> title_id = Column(ForeignKey('title.id'), nullable=False) >> >>>> >> >> department_id = Column(ForeignKey('department.id'), >> >>>> >> >> nullable=False) >> >>>> >> >> fund_id = Column(ForeignKey('fund.id'), nullable=False) >> >>>> >> >> department = relationship("Department") >> >>>> >> >> title = relationship("Title") >> >>>> >> >> fund = relationship("Fund") >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> class Title(Base): >> >>>> >> >> __tablename__ = 'title' >> >>>> >> >> id = Column(Integer, primary_key=True) >> >>>> >> >> department_id = Column(ForeignKey('department.id'), >> >>>> >> >> nullable=False) >> >>>> >> >> department = relationship("Department") >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> class Department(Base): >> >>>> >> >> __tablename__ = 'department' >> >>>> >> >> id = Column(Integer, primary_key=True) >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> class Fund(Base): >> >>>> >> >> __tablename__ = 'fund' >> >>>> >> >> id = Column(Integer, primary_key=True) >> >>>> >> >> title_id = Column(ForeignKey('title.id'), nullable=False) >> >>>> >> >> department_id = Column(ForeignKey('department.id'), >> >>>> >> >> nullable=False) >> >>>> >> >> department = relationship("Department") >> >>>> >> >> title = relationship("Title") >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> class FundTitle(Base): >> >>>> >> >> __tablename__ = 'fund_title' >> >>>> >> >> id = Column(Integer, primary_key=True) >> >>>> >> >> title_id = Column(ForeignKey('title.id'), nullable=False) >> >>>> >> >> department_id = Column(ForeignKey('department.id'), >> >>>> >> >> nullable=False) >> >>>> >> >> fund_id = Column(ForeignKey('fund.id'), nullable=False) >> >>>> >> >> department = relationship("Department") >> >>>> >> >> title = relationship("Title") >> >>>> >> >> fund = relationship("Fund") >> >>>> >> >> >> >>>> >> >> e = create_engine("postgresql://scott:tiger@localhost/test", >> >>>> >> >> echo=True) >> >>>> >> >> Base.metadata.create_all(e) >> >>>> >> >> >> >>>> >> >> s = Session(e) >> >>>> >> >> >> >>>> >> >> d1 = Department() >> >>>> >> >> t1 = Title(department=d1) >> >>>> >> >> f1 = Fund(department=d1, title=t1) >> >>>> >> >> ft1 = FundTitle(title=t1, department=d1, fund=f1) >> >>>> >> >> e1 = Employee(title=t1, department=d1, fund=f1) >> >>>> >> >> >> >>>> >> >> s.add_all([d1, t1, f1, ft1, e1]) >> >>>> >> >> s.commit() >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> the INSERTs can be ordered naturally here and the unit of work >> >>>> >> >> will do >> >>>> >> >> that for you if you use relationship: >> >>>> >> >> >> >>>> >> >> BEGIN (implicit) >> >>>> >> >> 2018-10-08 10:18:38,750 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> >> INTO >> >>>> >> >> department DEFAULT VALUES RETURNING department.id >> >>>> >> >> 2018-10-08 10:18:38,750 INFO sqlalchemy.engine.base.Engine {} >> >>>> >> >> 2018-10-08 10:18:38,753 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> >> INTO >> >>>> >> >> title (department_id) VALUES (%(department_id)s) RETURNING >> >>>> >> >> title.id >> >>>> >> >> 2018-10-08 10:18:38,753 INFO sqlalchemy.engine.base.Engine >> >>>> >> >> {'department_id': 1} >> >>>> >> >> 2018-10-08 10:18:38,757 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> >> INTO >> >>>> >> >> fund (title_id, department_id) VALUES (%(title_id)s, >> >>>> >> >> %(department_id)s) RETURNING fund.id >> >>>> >> >> 2018-10-08 10:18:38,757 INFO sqlalchemy.engine.base.Engine >> >>>> >> >> {'title_id': 1, 'department_id': 1} >> >>>> >> >> 2018-10-08 10:18:38,760 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> >> INTO >> >>>> >> >> employee (title_id, department_id, fund_id) VALUES (%(title_id)s, >> >>>> >> >> %(department_id)s, %(fund_id)s) RETURNING employee.id >> >>>> >> >> 2018-10-08 10:18:38,761 INFO sqlalchemy.engine.base.Engine >> >>>> >> >> {'title_id': 1, 'department_id': 1, 'fund_id': 1} >> >>>> >> >> 2018-10-08 10:18:38,763 INFO sqlalchemy.engine.base.Engine INSERT >> >>>> >> >> INTO >> >>>> >> >> fund_title (title_id, department_id, fund_id) VALUES >> >>>> >> >> (%(title_id)s, >> >>>> >> >> %(department_id)s, %(fund_id)s) RETURNING fund_title.id >> >>>> >> >> 2018-10-08 10:18:38,764 INFO sqlalchemy.engine.base.Engine >> >>>> >> >> {'title_id': 1, 'department_id': 1, 'fund_id': 1} >> >>>> >> >> 2018-10-08 10:18:38,766 INFO sqlalchemy.engine.base.Engine COMMIT >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> > >> >>>> >> >> > On Tuesday, September 18, 2018 at 9:02:30 AM UTC-4, Mike Bayer >> >>>> >> >> > wrote: >> >>>> >> >> >> >> >>>> >> >> >> if there are no dependencies between two particular objects of >> >>>> >> >> >> different classes, say A and B, then there is no deterministic >> >>>> >> >> >> ordering between them. For objects of the same class, they >> >>>> >> >> >> are >> >>>> >> >> >> inserted in the order in which they were added to the Session. >> >>>> >> >> >> >> >>>> >> >> >> the correct way to solve this problem in SQLAlchemy is to use >> >>>> >> >> >> relationship() fully. I know you've stated that these objects >> >>>> >> >> >> have a >> >>>> >> >> >> relationship() between them but you have to actually use it, >> >>>> >> >> >> that is: >> >>>> >> >> >> >> >>>> >> >> >> obj_a = A() >> >>>> >> >> >> obj_b = B() >> >>>> >> >> >> >> >>>> >> >> >> obj_a.some_relationship = obj_b # will definitely flush >> >>>> >> >> >> correctly >> >>>> >> >> >> unless there is a bug >> >>>> >> >> >> >> >>>> >> >> >> OTOH if you are only using foreign key attributes, the ORM >> >>>> >> >> >> does *not* >> >>>> >> >> >> have any idea in how it should be flushing these: >> >>>> >> >> >> >> >>>> >> >> >> obj_a = A() >> >>>> >> >> >> obj_b = B() >> >>>> >> >> >> >> >>>> >> >> >> obj_a.some_fk = obj_b.some_id # ORM doesn't care about >> >>>> >> >> >> this, no >> >>>> >> >> >> ordering is implied >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> since you said you're not setting any IDs, I'm not sure how >> >>>> >> >> >> you could >> >>>> >> >> >> be doing the above. >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> On Tue, Sep 18, 2018 at 5:53 AM Simon King >> >>>> >> >> >> <[email protected]> wrote: >> >>>> >> >> >> > >> >>>> >> >> >> > It's not something I've ever looked into, but I'm not aware >> >>>> >> >> >> > of any >> >>>> >> >> >> > debugging options here, no. You'd probably want to start by >> >>>> >> >> >> > scattering >> >>>> >> >> >> > print statements around the UOWTransaction class >> >>>> >> >> >> > (https://bitbucket.org/zzzeek/sqlalchemy/src/c94d67892e68ac317d72eb202cca427084b3ca74/lib/sqlalchemy/orm/unitofwork.py?at=master&fileviewer=file-view-default#unitofwork.py-111) >> >>>> >> >> >> > >> >>>> >> >> >> > Looking at that code made me wonder whether you've set any >> >>>> >> >> >> > particular >> >>>> >> >> >> > cascade options on your relationship; I'm not sure if >> >>>> >> >> >> > cascade options >> >>>> >> >> >> > affect the dependency calculation. >> >>>> >> >> >> > >> >>>> >> >> >> > Simon >> >>>> >> >> >> > >> >>>> >> >> >> > On Tue, Sep 18, 2018 at 5:28 AM Alex Rothberg >> >>>> >> >> >> > <[email protected]> wrote: >> >>>> >> >> >> > > >> >>>> >> >> >> > > In order to guide me in stripping down this code to >> >>>> >> >> >> > > produce an example for positing, are there any options / >> >>>> >> >> >> > > flags / introspections I can turn on to understand how sql >> >>>> >> >> >> > > makes decisions about the order in which is writes >> >>>> >> >> >> > > statements to the DB? >> >>>> >> >> >> > > >> >>>> >> >> >> > > On Friday, September 14, 2018 at 10:13:45 AM UTC-4, Simon >> >>>> >> >> >> > > King wrote: >> >>>> >> >> >> > >> >> >>>> >> >> >> > >> In that case can you show us the code that is causing the >> >>>> >> >> >> > >> problem? >> >>>> >> >> >> > >> On Fri, Sep 14, 2018 at 2:55 PM Alex Rothberg >> >>>> >> >> >> > >> <[email protected]> wrote: >> >>>> >> >> >> > >> > >> >>>> >> >> >> > >> > I am not generating any IDs myself and I already have >> >>>> >> >> >> > >> > relationships between the models. >> >>>> >> >> >> > >> > >> >>>> >> >> >> > >> > On Friday, September 14, 2018 at 4:33:08 AM UTC-4, >> >>>> >> >> >> > >> > Simon King wrote: >> >>>> >> >> >> > >> >> >> >>>> >> >> >> > >> >> On Thu, Sep 13, 2018 at 10:50 PM Alex Rothberg >> >>>> >> >> >> > >> >> <[email protected]> wrote: >> >>>> >> >> >> > >> >> > >> >>>> >> >> >> > >> >> > Is it possible to hint at sqla the order in which it >> >>>> >> >> >> > >> >> > should write out changes to the DB? >> >>>> >> >> >> > >> >> > >> >>>> >> >> >> > >> >> > I am having issues in which I add two new objects to >> >>>> >> >> >> > >> >> > a session, a and b where a depends on b, but sqla is >> >>>> >> >> >> > >> >> > flushing a before b leading to an fk issue. I can >> >>>> >> >> >> > >> >> > solve this a few ways: explicitly calling flush >> >>>> >> >> >> > >> >> > after adding b, or changing the fk constraint to be >> >>>> >> >> >> > >> >> > initially deferred. Ideally I would not have to do >> >>>> >> >> >> > >> >> > either of these. >> >>>> >> >> >> > >> >> > >> >>>> >> >> >> > >> >> >> >>>> >> >> >> > >> >> If you have configured a relationship between the two >> >>>> >> >> >> > >> >> classes >> >>>> >> >> >> > >> >> (http://docs.sqlalchemy.org/en/latest/orm/tutorial.html#building-a-relationship), >> >>>> >> >> >> > >> >> and you've linked the objects together using that >> >>>> >> >> >> > >> >> relationship (a.b = >> >>>> >> >> >> > >> >> b), then SQLAlchemy will flush them in the correct >> >>>> >> >> >> > >> >> order. If you are >> >>>> >> >> >> > >> >> generating your IDs in Python and assigning them to >> >>>> >> >> >> > >> >> the primary and >> >>>> >> >> >> > >> >> foreign key columns directly, SQLAlchemy probably >> >>>> >> >> >> > >> >> won't understand the >> >>>> >> >> >> > >> >> dependency. >> >>>> >> >> >> > >> >> >> >>>> >> >> >> > >> >> Does using a relationship fix your problem? >> >>>> >> >> >> > >> >> >> >>>> >> >> >> > >> >> Simon >> >>>> >> >> >> > >> > >> >>>> >> >> >> > >> > -- >> >>>> >> >> >> > >> > 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. >> >>>> >> >> >> >>>> >> >> -- >> >>>> >> >> 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 a topic >> >>>> >> >> in the Google Groups "sqlalchemy" group. >> >>>> >> >> To unsubscribe from this topic, visit >> >>>> >> >> https://groups.google.com/d/topic/sqlalchemy/fZMJQoI2qkY/unsubscribe. >> >>>> >> >> To unsubscribe from this group and all its topics, 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. > > -- > 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.
